生产者如何同步或异步发送数据

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) {
                        }
                    }
                });
上一篇下一篇

猜你喜欢

热点阅读