<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    paulwong

    Springboot ActiveMQ jmsTemplate配置

    @Configuration
    @DependsOn(value="cachingConnectionFactory")
    public class JmsTemplateConfiguration {

    @Value("${wechat.sendmessage.queue}")
    private String queueName;

    @Value("${wechat.sendmessage.topic}")
    private String topicName;

    @Value("${spring.jms.pub-sub-domain}")
    private boolean isPubSubDomain;


    /**
     * 定義點(diǎn)對(duì)點(diǎn)隊(duì)列
     * 
    @return
     
    */
    @Bean
    public Queue queue() {
        return new ActiveMQQueue(queueName);
    }



    /**
     * 定義一個(gè)主題
     * 
    @return
     
    */
    @Bean
    public Topic topic() {
        return new ActiveMQTopic(topicName);
    }

    private final ObjectProvider<DestinationResolver> destinationResolver;
    private final ObjectProvider<MessageConverter> messageConverter;
    private final CachingConnectionFactory cachingConnectionFactory;

    @Autowired
    public JmsTemplateConfiguration(ObjectProvider<DestinationResolver> destinationResolver,
                                    ObjectProvider<MessageConverter> messageConverter,
                                    CachingConnectionFactory cachingConnectionFactory) {
        this.destinationResolver = destinationResolver;
        this.messageConverter = messageConverter;
        this.cachingConnectionFactory = cachingConnectionFactory;
    }

    /**
     * 配置隊(duì)列生產(chǎn)者的JmsTemplate
     * 
    @return JmsTemplate
     
    */
    @Bean(name="jmsQueueTemplate")
    public JmsTemplate jmsQueueTemplate() {
        //設(shè)置創(chuàng)建連接的工廠
        
    //JmsTemplate jmsTemplate = new JmsTemplate(connectionFactory);
        
    //優(yōu)化連接工廠,這里應(yīng)用緩存池 連接工廠就即可
        JmsTemplate jmsTemplate = new JmsTemplate(cachingConnectionFactory);
        //設(shè)置默認(rèn)消費(fèi)topic
       
    //jmsTemplate.setDefaultDestination(topic());
        
    //設(shè)置P2P隊(duì)列消息類型
        jmsTemplate.setPubSubDomain(isPubSubDomain);

        DestinationResolver destinationResolver = (DestinationResolver) this.destinationResolver.getIfUnique();
        if (destinationResolver != null) {
            jmsTemplate.setDestinationResolver(destinationResolver);
        }
        MessageConverter messageConverter = (MessageConverter) this.messageConverter.getIfUnique();
        if (messageConverter != null) {
            jmsTemplate.setMessageConverter(messageConverter);
        }
        //deliveryMode, priority, timeToLive 的開關(guān),要生效,必須配置為true,默認(rèn)false
        jmsTemplate.setExplicitQosEnabled(true);
        //DeliveryMode.NON_PERSISTENT=1:非持久 ; DeliveryMode.PERSISTENT=2:持久
        
    //定義持久化后節(jié)點(diǎn)掛掉以后,重啟可以繼續(xù)消費(fèi).
        jmsTemplate.setDeliveryMode(DeliveryMode.PERSISTENT);
        //默認(rèn)不開啟事務(wù)
        System.out.println("默認(rèn)是否開啟事務(wù):"+jmsTemplate.isSessionTransacted());
        //如果不啟用事務(wù),則會(huì)導(dǎo)致XA事務(wù)失效;
        
    //作為生產(chǎn)者如果需要支持事務(wù),則需要配置SessionTransacted為true
      
    //jmsTemplate.setSessionTransacted(true);
        
    //消息的應(yīng)答方式,需要手動(dòng)確認(rèn),此時(shí)SessionTransacted必須被設(shè)置為false,且為Session.CLIENT_ACKNOWLEDGE模式
        
    //Session.AUTO_ACKNOWLEDGE  消息自動(dòng)簽收
        
    //Session.CLIENT_ACKNOWLEDGE  客戶端調(diào)用acknowledge方法手動(dòng)簽收
        
    //Session.DUPS_OK_ACKNOWLEDGE 不必必須簽收,消息可能會(huì)重復(fù)發(fā)送
        jmsTemplate.setSessionAcknowledgeMode(Session.CLIENT_ACKNOWLEDGE);
        return jmsTemplate;
    }

    /**
     * 配置發(fā)布訂閱生產(chǎn)者的JmsTemplate
     * 
    @return JmsTemplate
     
    */
    @Bean(name="jmsTopicTemplate")
    public JmsTemplate jmsTopicTemplate() {
        //設(shè)置創(chuàng)建連接的工廠
       
    //JmsTemplate jmsTemplate = new JmsTemplate(connectionFactory);
        
    //優(yōu)化連接工廠,這里應(yīng)用緩存池 連接工廠就即可
        JmsTemplate jmsTemplate = new JmsTemplate(cachingConnectionFactory);
        //設(shè)置默認(rèn)消費(fèi)topic
      
    //jmsTemplate.setDefaultDestination(topic());
        
    //設(shè)置發(fā)布訂閱消息類型
        jmsTemplate.setPubSubDomain(isPubSubDomain);


        //deliveryMode, priority, timeToLive 的開關(guān),要生效,必須配置為true,默認(rèn)false
        jmsTemplate.setExplicitQosEnabled(true);
        //DeliveryMode.NON_PERSISTENT=1:非持久 ; DeliveryMode.PERSISTENT=2:持久
        jmsTemplate.setDeliveryMode(DeliveryMode.PERSISTENT);

        //默認(rèn)不開啟事務(wù)
        System.out.println("是否開啟事務(wù)"+jmsTemplate.isSessionTransacted());
        //如果session帶有事務(wù),并且事務(wù)成功提交,則消息被自動(dòng)簽收。如果事務(wù)回滾,則消息會(huì)被再次傳送。
        
    //jmsTemplate.setSessionTransacted(true);

        
    //不帶事務(wù)的session的簽收方式,取決于session的配置。
        
    //默認(rèn)消息確認(rèn)方式為1,即AUTO_ACKNOWLEDGE
        System.out.println("是否消息確認(rèn)方式"+jmsTemplate.getSessionAcknowledgeMode());

        //消息的應(yīng)答方式,需要手動(dòng)確認(rèn),此時(shí)SessionTransacted必須被設(shè)置為false,且為Session.CLIENT_ACKNOWLEDGE模式
        
    //Session.AUTO_ACKNOWLEDGE  消息自動(dòng)簽收
        
    //Session.CLIENT_ACKNOWLEDGE  客戶端調(diào)用acknowledge方法手動(dòng)簽收
        
    //Session.DUPS_OK_ACKNOWLEDGE 不必必須簽收,消息可能會(huì)重復(fù)發(fā)送
        jmsTemplate.setSessionAcknowledgeMode(Session.CLIENT_ACKNOWLEDGE);

        return jmsTemplate;
    }

    }

    posted on 2019-07-24 11:40 paulwong 閱讀(2127) 評(píng)論(0)  編輯  收藏 所屬分類: JMS

    主站蜘蛛池模板: 亚洲五月综合缴情在线观看| 久久九九久精品国产免费直播| 久久青草免费91线频观看站街| 亚洲色图综合在线| 日韩精品无码免费视频| 国产jizzjizz视频全部免费| 亚洲JIZZJIZZ妇女| 亚洲精彩视频在线观看| 三年在线观看免费观看完整版中文 | 亚洲AV色吊丝无码| 亚洲一区免费观看| 成人午夜视频免费| 亚洲人成网亚洲欧洲无码| 日日操夜夜操免费视频| 黄页网址大全免费观看12网站| 亚洲А∨精品天堂在线| 久久国产乱子伦精品免费午夜 | 国产精品亚洲综合久久| 成年私人影院免费视频网站| 亚洲第一成年免费网站| 亚洲国产成人久久综合碰| 大地资源中文在线观看免费版| 国产一级高清视频免费看| 另类图片亚洲校园小说区| 99精品国产免费久久久久久下载 | 四虎成人免费网站在线| 亚洲人成77777在线播放网站| 免费成人在线视频观看| 亚洲jjzzjjzz在线播放| 亚洲 国产 图片| 久久久久久久99精品免费| 亚洲综合中文字幕无线码| 亚洲精品老司机在线观看| 亚洲日韩一区二区三区| 亚洲欧洲精品成人久久奇米网| 午夜无码A级毛片免费视频| 亚洲人成自拍网站在线观看| 久久精品亚洲乱码伦伦中文| 91精品视频在线免费观看| 亚洲av无码一区二区三区人妖| 九月丁香婷婷亚洲综合色|