国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

SpringBoot ActiveMq JmsTemplate 異步發(fā)送、非持久化

AprilJ / 2069人閱讀

摘要:異步發(fā)送不會在受到的確認之前一直阻塞方法。方法成功返回意味著所有的持久消息都以被寫到二級存儲中。總結默認情況,非持久化消息事務內的消息均采用異步發(fā)送對于持久化消息采用同步發(fā)送。

ActiveMq事務

ActiveMq事務的作用就是在發(fā)送、接收處理消息過程中,如果出現(xiàn)問題,可以回滾。

ActiveMq異步/同步發(fā)送

以下摘抄自https://blog.csdn.net/songhai...

同步發(fā)送:
消息生產者使用持久(persistent)傳遞模式發(fā)送消息的時候,Producer.send() 方法會被阻塞,直到 broker 發(fā)送一個確認消息給生產者(ProducerAck),這個確認消息暗示broker已經(jīng)成功接收到消息并把消息保存到二級存儲中。

異步發(fā)送
如果應用程序能夠容忍一些消息的丟失,那么可以使用異步發(fā)送。異步發(fā)送不會在受到 broker 的確認之前一直阻塞 Producer.send 方法。

當發(fā)送方法在一個事務上下文中時,被阻塞的是 commit 方法而不是 send 方法。commit 方法成功返回意味著所有的持久消息都以被寫到二級存儲中。

想要使用異步,在brokerURL中增加 jms.alwaysSyncSend=false&jms.useAsyncSend=true
如果設置了alwaysSyncSend=true系統(tǒng)將會忽略useAsyncSend設置的值都采用同步
???? 1) 當alwaysSyncSend=false時,“NON_PERSISTENT”(非持久化)、事務中的消息將使用“異步發(fā)送”
???? 2) 當alwaysSyncSend=false時,如果指定了useAsyncSend=true,“PERSISTENT”類型的消息使用異步發(fā)送。如果useAsyncSend=false,“PERSISTENT”類型的消息使用同步發(fā)送。
總結:默認情況(alwaysSyncSend=false,useAsyncSend=false),非持久化消息、事務內的消息均采用異步發(fā)送;對于持久化消息采用同步發(fā)送。
?? jms.sendTimeout:發(fā)送超時時間,默認等于0,如果jms.sendTimeout>0將會忽略(alwaysSyncSend、useAsyncSend、消息是否持久化)所有的消息都是用同步發(fā)送!

官方連接:http://activemq.apache.org/as...

配置使用異步發(fā)送方式

1.在連接上配置
cf = new ActiveMQConnectionFactory("tcp://locahost:61616?jms.useAsyncSend=true");

2.通過ConnectionFactory
((ActiveMQConnectionFactory)connectionFactory).setUseAsyncSend(true);

3.通過connection
((ActiveMQConnection)connection).setUseAsyncSend(true);

SpringBoot JMS實現(xiàn)異步發(fā)送

1.如果在配置中使用了連接池,那么SpringBoot默認會使用PooledConnectionFactory,ActiveMQConnectionFactory的useAsyncSend默認會true。使用連接池配置如下

activemq:
    in-memory: true
    broker-url: tcp://127.0.0.1:61616
    pool:
      enabled: true
      max-connections: 5
    user:
    password:

2.修改JmsTemplate 默認參數(shù)

JmsTemplate template = new JmsTemplate(pooledConnectionFactory);
//設備為true,deliveryMode, priority, timeToLive等設置才會起作用
template.setExplicitQosEnabled(true);
//設為非持久化模式
template.setDeliveryMode(DeliveryMode.NON_PERSISTENT);

完整代碼如下:

@Slf4j
@Configuration
public class ActiveConfig {
    /**
     * 配置用于異步發(fā)送的非持久化JmsTemplate
     */ 
    @Autowired
    @Bean
    @Primary
    public JmsTemplate asynJmsTemplate(PooledConnectionFactory pooledConnectionFactory) {
        JmsTemplate template = new JmsTemplate(pooledConnectionFactory);
        template.setExplicitQosEnabled(true);
        template.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
        log.info("jsmtemplate ------------->sessionTransacted:{}",template.isSessionTransacted());
        log.info("jsmtemplate ------------->ExplicitQosEnabled:{}",template.isExplicitQosEnabled());
        return template;
    }

    /**
     * 配置用于同步發(fā)送的持久化JmsTemplate
     */  
    @Autowired
    @Bean
    public JmsTemplate synJmsTemplate(PooledConnectionFactory pooledConnectionFactory) {
        JmsTemplate template = new JmsTemplate(pooledConnectionFactory);
        log.info("jsmtemplate ------------->sessionTransacted:{}",template.isSessionTransacted());
        log.info("jsmtemplate ------------->ExplicitQosEnabled:{}",template.isExplicitQosEnabled());
        return template;
    }

//如果對于SpringBoot自動生成的PooledConnectionFactory需要調優(yōu),可以自己生PooledConnectionFactory調優(yōu)參數(shù)
//    private PooledConnectionFactory getPooledConnectionFactory(String userName,String password,String brokerURL) {
//        ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(userName,password,brokerURL);
//        ActiveMQPrefetchPolicy activeMQPrefetchPolicy = new ActiveMQPrefetchPolicy();
//        activeMQConnectionFactory.setPrefetchPolicy(activeMQPrefetchPolicy);
//        PooledConnectionFactory pooledConnectionFactory = new PooledConnectionFactory(activeMQConnectionFactory);
//        pooledConnectionFactory.setMaxConnections(5);
//        return pooledConnectionFactory;
//    }

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/72773.html

相關文章

  • JMS 在 SpringBoot 中的使用

    摘要:本文主要講述消息服務在中的使用。所以需要一個監(jiān)聽容器工廠的概念,即接口,它會引用上面創(chuàng)建好的與的連接工廠,由它來負責接收消息以及將消息分發(fā)給指定的監(jiān)聽器。為了消費消息,訂閱者必須保持運行的狀態(tài)。 JMS 在 SpringBoot 中的使用 摘要:本文屬于原創(chuàng),歡迎轉載,轉載請保留出處:https://github.com/jasonGeng88/blog> 本文所有服務均采用doc...

    Michael_Ding 評論0 收藏0
  • SpringBoot ActiveMQ 整合使用

    摘要:介紹它是出品,最流行的,能力強勁的開源消息總線。是一個完全支持和規(guī)范的實現(xiàn),盡管規(guī)范出臺已經(jīng)是很久的事情了,但是在當今的應用中間仍然扮演著特殊的地位。相關文章整合使用整合使用關注我轉載請務必注明原創(chuàng)地址為安裝同之前一樣,直接在里面玩吧。 showImg(https://segmentfault.com/img/remote/1460000012996066?w=1920&h=1281)...

    gaara 評論0 收藏0
  • 慕課網(wǎng)_《Java消息中間件》學習總結

    摘要:時間年月日星期六說明本文部分內容均來自慕課網(wǎng)。這個時候,可以啟動多臺積分系統(tǒng),來同時消費這個消息中間件里面的登錄消息,達到橫向擴展的作用。 時間:2017年07月22日星期六說明:本文部分內容均來自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com教學源碼:無學習源碼:https://github.com/zccodere/s... 第一章:課程介紹 1-1 課程安排 Java...

    twohappy 評論0 收藏0
  • 消息隊列ActiveMQ的使用詳解

    摘要:學習消息隊列的使用之前,我們先來搞清。是操作消息的接口。消息生產者由創(chuàng)建,并用于將消息發(fā)送到。接收消息打印結果這是接收到的消息消費者啟動。。。。 通過上一篇文章 《消息隊列深入解析》,我們已經(jīng)消息隊列是什么、使用消息隊列的好處以及常見消息隊列的簡單介紹。 這一篇文章,主要帶大家詳細了解一下消息隊列ActiveMQ的使用。 學習消息隊列ActiveMQ的使用之前,我們先來搞清JMS。 J...

    niceforbear 評論0 收藏0
  • 深入淺出 JMS(七) - ActiveMQ 與 Spring 整合

    摘要:消費者,監(jiān)聽生產者往指定目的地發(fā)送消息后,接下來就是消費者對指定目的地的消息進行消費了。它不會動態(tài)的適應運行時需要和參與外部的事務管理。它很好的平衡了對提供者要求低先進功能如事務參與和兼容環(huán)境。 深入淺出 JMS(七) - ActiveMQ 與 Spring 整合 一、與spring整合實現(xiàn)ptp的同步接收消息 (1)config.properties ## ActiveMQ Conf...

    NoraXie 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<