мне было интересно, как проверить JMS с помощью ActiveMQ на основе ответа предлагая с помощью ActiveMQ, чтобы сделать тест Simulating JMS - jUnitТестовый пример для ActiveMQ
Однако, я не получаю сообщение я ожидал от MessageConsumer. Если я использовал его, он просто зависает там.
Вот мой код
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.MessageConsumer;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.junit.Assert;
import org.junit.Test;
public class JmsTest {
@Test
public void test() throws Exception {
final ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(
"vm://localhost?broker.persistent=true");
final Queue queue;
final Connection connection = connectionFactory.createConnection();
final Session session = connection.createSession(true,
Session.AUTO_ACKNOWLEDGE);
{
queue = session.createQueue("test");
}
{
final MessageProducer producer = session.createProducer(queue);
final TextMessage message = session.createTextMessage("testing");
producer.send(message);
}
{
final MessageConsumer consumer = session.createConsumer(queue);
final TextMessage message = (TextMessage) consumer.receiveNoWait();
// "message" is null at this point
Assert.assertEquals("testing", message.getText());
}
}
}
Как @ тим-Биш сказал, connection.start() должна быть вызвана, прежде чем она используется. –
потребитель должен быть создан до того, как производитель отправит сообщение. –