ActiveMQ 接受不到消息
接受消息的代码
ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(
ActiveMQConnectionFactory.DEFAULT_USER,
ActiveMQConnectionFactory.DEFAULT_PASSWORD,
"tcp://127.0.0.1:61616");
activeMQConnectionFactory.setTrustAllPackages(true);
Connection connection = activeMQConnectionFactory.createConnection();
//false -- 关闭事务;Session.AUTO_ACKNOWLEDGE -- 手动确认
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Queue queue = session.createQueue("user");
MessageConsumer consumer = session.createConsumer(queue);
consumer.setMessageListener(message -> {
try {
String text = ((TextMessage) message).getText();
System.out.println(text);
} catch (JMSException e) {
e.printStackTrace();
}
});
运行后发现,一直在阻塞,接收不到消息
检查代码后发现
需要在接受前调用connection.start()方法
ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(
ActiveMQConnectionFactory.DEFAULT_USER,
ActiveMQConnectionFactory.DEFAULT_PASSWORD,
"tcp://127.0.0.1:61616");
activeMQConnectionFactory.setTrustAllPackages(true);
Connection connection = activeMQConnectionFactory.createConnection();
//false -- 关闭事务;Session.AUTO_ACKNOWLEDGE -- 手动确认
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
connection.start();
Queue queue = session.createQueue("user");
MessageConsumer consumer = session.createConsumer(queue, "type='C'");
consumer.setMessageListener(message -> {
try {
String text = ((TextMessage) message).getText();
System.out.println(text);
} catch (JMSException e) {
e.printStackTrace();
}
});