ActiveMQ报错:Cannot synchronously receive a message when a MessageListener is set
最近在看消息队列,看了ActiveMQ的消息队列,我自己模拟消息生产者与消息消费者,不过期间一直遇到了这个问题,网上查找了好久,终于找到了解决方案,自己写的有问题。
消息生产者代码
- 生产者
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
public class ProducerTool {
private String user = ActiveMQConnection.DEFAULT_USER;
private String password = ActiveMQConnection.DEFAULT_PASSWORD;
private String url = ActiveMQConnection.DEFAULT_BROKER_URL;
private String subject = "xiaojian";
private Destination destination = null;
private Connection connection = null;
private Session session = null;
private MessageProducer producer = null;
//初始化
private void initialize() throws JMSException {
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(user, password, url);
connection = connectionFactory.createConnection();
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
destination = session.createQueue(subject);
producer = session.createProducer(destination);
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
}
//发消息
public void produceMessage(String message) throws JMSException {
initialize();
TextMessage msg = session.createTextMessage(message);
connection.start();
System.out.println("Producer: -> Sending message : " + message);
producer.send(msg);
System.out.println("Producer: -> Message sent complete !");
}
//关闭连接
public void close() throws JMSException {
System.out.println("Producer: -> Closing connection");
if (null != producer) {
producer.close