前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >message.setJMSDeliveryMode没有效果

message.setJMSDeliveryMode没有效果

作者头像
johnhuster的分享
发布2022-03-29 14:23:57
2390
发布2022-03-29 14:23:57
举报
文章被收录于专栏:johnhuster

通过MessageProducer的setJMSDeliveryMode方法设置的模式可以影响发送消息的传送模式,为什么通过message.setJMSDeliveryMode设置的传递模式却没有影响传送消息的传递模式,

下面以Queue为例来看下为什么会出现上面的情况:

代码语言:javascript
复制
ActiveMQMessageProducerSupport:
public void send(Message message) throws JMSException {
         this.send(this.getDestination(),
                   message,
                   this.defaultDeliveryMode,
                   this.defaultPriority,
                   this.defaultTimeToLive);
     }

看到这里就应该明白了,通过message对象设置消息的delivermode不会影响messageproducer传递消息时的传递模式,但是通过messageproducer的setJMSDeliveryMode修改传递模式时:

代码语言:javascript
复制
    public void setDeliveryMode(int newDeliveryMode) throws JMSException {
         if (newDeliveryMode != DeliveryMode.PERSISTENT && newDeliveryMode != DeliveryMode.NON_PERSISTENT) {
             throw new javax.jms.IllegalStateException("unknown delivery mode: " + newDeliveryMode);
         }
         checkClosed();
         this.defaultDeliveryMode = newDeliveryMode;
     }

相信通过上面两个方法对比,大家应该知道其中缘由了!

当然也可以通过producer的另一个重载方法来显性设置某个消息的传递模式:

代码语言:javascript
复制
send(
         Destination destination,
         Message message,
         int deliveryMode,    //直接传入传递模式
         int priority,
         long timeToLive)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018/08/13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档