我在main方法中有以下代码。我没有得到如何检查从消息代理发送的确认。基本上我想获得从第1行的消息代理发送的确认值
try {
ActiveMQConnectionFactory connectionFactory =
new ActiveMQConnectionFactory(url);
// Create a Connection
Connection connection = connectionFactory.createConnection();
connection.start();
// Create a Session
Session session = connection.createSession(true,
Session.AUTO_ACKNOWLEDGE);
// Create the destination (Topic or Queue)
Destination destination = session.createQueue(subject);
// Create a MessageProducer from the Session to the Topic or Queue
MessageProducer producer = session.createProducer(destination);
producer.setDeliveryMode(DeliveryMode.PERSISTENT);
// Create a messages
String text = "Hello world! From Jon";
TextMessage message = session.createTextMessage(text);
producer.send(message);
// how to check acknowledgement here? // line1
session.commit();
// Clean up
session.close();
connection.close();
}
catch (Exception e) {
System.out.println("Caught: " + e);
e.printStackTrace();
}
我创建Session session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
消息代理会在收到消息后发送确认,但生产者将如何获得确认?
答案 0 :(得分:0)
Broker向生产者发送没有明显的确认。在非TX情况下,只有在代理已经确认后,send方法才会返回,除非您将客户端配置为始终发送异步或发送非持久性消息。在TX情况下,除非您配置始终同步发送选项,否则消息始终是异步发送的。 TX情况下的同步点是提交调用,在消息被持久化并且TX结束之前不会返回。