生产者如何同步或异步发送数据
2019-10-21 本文已影响0人
长孙俊明
同步发送
没有使用事务并且 生产者以PERSISTENT传送模式发送消息
在这种情况 下, send方法都是同步的,并且一直阻塞直到ActiveMQ发回确认消息:消息已经存储在持久性数据存储中。这种确认机制保证消息不会丢失,但会造成 生产者阻塞从而影响反应时间。
异步发送
启用事务并且 生产者以PERSISTENT传送模式发送消息
异步发送的方式不止以上一种,还有其他好几种,比如通过URL方式也可以,在url后追加 jms.useAsyncSend=true
private static final String brokerURL = "tcp://192.168.10.55:61616?jms.useAsyncSend=true";
第三种方式
// 异步方式发送某条消息
((ActiveMQMessageProducer) producer).send(message, new AsyncCallback() {
@Override
public void onException(JMSException exception) {
// TODO Auto-generated method stub
}
@Override
public void onSuccess() {
try {
System.out.println(Thread.currentThread().getName() + " 异步发送完成:messageId: "
+ message.getJMSMessageID() + " " + text);
} catch (JMSException e) {
}
}
});