前言
activemq默认使用异步投递模式,两种情况除外:
1. 手动开启同步模式
2. 在未开启事务的情况下发送持久化消息
设置异步投递的三种方式
1.在url后面添加参数
2.使用ActiveMQConnectionFactory对象设置属性
3.使用ActiveMQConnection对象设置属性
使用异步投递消息不阻塞,消息生产者会默认消息发送成功,因此可能会出现消息丢失,所以发送的时候需要接收回调。
测试代码
@Test
public void send() throws JMSException {
ActiveMQConnectionFactory acf = new ActiveMQConnectionFactory("nio://192.168.227.129:61608");
acf.setUseAsyncSend(true);
Connection connection = acf.createConnection();
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Queue queue = session.createQueue("queue");
ActiveMQMessageProducer producer = (ActiveMQMessageProducer) session.createProducer(queue);
TextMessage textMessage = session.createTextMessage("*****asyncMessage******");
producer.send(textMessage, new AsyncCallback() {
@Override
public void onException(JMSException e) {
System.out.println("处理投递失败逻辑");
}
@Override
public void onSuccess() {
System.out.println("投递成功");
}
});
System.out.println("发送成功");
producer.close();
session.close();
connection.close();
}