<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;


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



    /**
     * 定義一個主題
     * 
    @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;
    }

    /**
     * 配置隊列生產者的JmsTemplate
     * 
    @return JmsTemplate
     
    */
    @Bean(name="jmsQueueTemplate")
    public JmsTemplate jmsQueueTemplate() {
        //設置創建連接的工廠
        
    //JmsTemplate jmsTemplate = new JmsTemplate(connectionFactory);
        
    //優化連接工廠,這里應用緩存池 連接工廠就即可
        JmsTemplate jmsTemplate = new JmsTemplate(cachingConnectionFactory);
        //設置默認消費topic
       
    //jmsTemplate.setDefaultDestination(topic());
        
    //設置P2P隊列消息類型
        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 的開關,要生效,必須配置為true,默認false
        jmsTemplate.setExplicitQosEnabled(true);
        //DeliveryMode.NON_PERSISTENT=1:非持久 ; DeliveryMode.PERSISTENT=2:持久
        
    //定義持久化后節點掛掉以后,重啟可以繼續消費.
        jmsTemplate.setDeliveryMode(DeliveryMode.PERSISTENT);
        //默認不開啟事務
        System.out.println("默認是否開啟事務:"+jmsTemplate.isSessionTransacted());
        //如果不啟用事務,則會導致XA事務失效;
        
    //作為生產者如果需要支持事務,則需要配置SessionTransacted為true
      
    //jmsTemplate.setSessionTransacted(true);
        
    //消息的應答方式,需要手動確認,此時SessionTransacted必須被設置為false,且為Session.CLIENT_ACKNOWLEDGE模式
        
    //Session.AUTO_ACKNOWLEDGE  消息自動簽收
        
    //Session.CLIENT_ACKNOWLEDGE  客戶端調用acknowledge方法手動簽收
        
    //Session.DUPS_OK_ACKNOWLEDGE 不必必須簽收,消息可能會重復發送
        jmsTemplate.setSessionAcknowledgeMode(Session.CLIENT_ACKNOWLEDGE);
        return jmsTemplate;
    }

    /**
     * 配置發布訂閱生產者的JmsTemplate
     * 
    @return JmsTemplate
     
    */
    @Bean(name="jmsTopicTemplate")
    public JmsTemplate jmsTopicTemplate() {
        //設置創建連接的工廠
       
    //JmsTemplate jmsTemplate = new JmsTemplate(connectionFactory);
        
    //優化連接工廠,這里應用緩存池 連接工廠就即可
        JmsTemplate jmsTemplate = new JmsTemplate(cachingConnectionFactory);
        //設置默認消費topic
      
    //jmsTemplate.setDefaultDestination(topic());
        
    //設置發布訂閱消息類型
        jmsTemplate.setPubSubDomain(isPubSubDomain);


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

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

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

        //消息的應答方式,需要手動確認,此時SessionTransacted必須被設置為false,且為Session.CLIENT_ACKNOWLEDGE模式
        
    //Session.AUTO_ACKNOWLEDGE  消息自動簽收
        
    //Session.CLIENT_ACKNOWLEDGE  客戶端調用acknowledge方法手動簽收
        
    //Session.DUPS_OK_ACKNOWLEDGE 不必必須簽收,消息可能會重復發送
        jmsTemplate.setSessionAcknowledgeMode(Session.CLIENT_ACKNOWLEDGE);

        return jmsTemplate;
    }

    }

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

    主站蜘蛛池模板: 免费无码作爱视频| www免费黄色网| 亚洲性线免费观看视频成熟| 久久国产亚洲高清观看| 久久这里只精品99re免费| 亚洲AV人无码综合在线观看| 久久免费福利视频| 亚洲精品熟女国产| 波多野结衣在线免费观看| 激情综合亚洲色婷婷五月APP| 国产免费AV片在线播放唯爱网| 2020天堂在线亚洲精品专区| 蜜桃视频在线观看免费网址入口| 亚洲综合色婷婷在线观看| 热99re久久免费视精品频软件| 91成人在线免费观看| a级黄色毛片免费播放视频| 亚洲成无码人在线观看| 亚洲精品在线免费看| 久久久久亚洲av无码专区 | 亚洲youwu永久无码精品| 国产成人亚洲综合色影视| 国产精品久久免费视频| 最新黄色免费网站| 中文字幕手机在线免费看电影| 亚洲精品无码av片| 亚洲导航深夜福利| 亚洲AV无码乱码国产麻豆| 亚洲第一视频在线观看免费| 欧洲黑大粗无码免费| 久久久久久国产精品免费无码| 一级毛片在线播放免费| 亚洲va中文字幕| 国产成人精品日本亚洲专一区| 久久综合亚洲色HEZYO社区| 中文字幕精品亚洲无线码一区应用| 男女交性永久免费视频播放| 国产成在线观看免费视频| 99在线免费观看视频| 国产免费一区二区三区不卡| free哆拍拍免费永久视频|