国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Springboot與RabbitMQ消息超時時間、隊列消息超時時間

這篇具有很好參考價值的文章主要介紹了Springboot與RabbitMQ消息超時時間、隊列消息超時時間。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一 TTL(過期時間)

TTL是 Time-To-Live 的縮寫,RabbitMQ可以對消息和隊列設(shè)置TTL(過期時間)。
RabbitMQ針對隊列中的消息過期時間(Time To Live, TTL)有兩種方法可以設(shè)置。
第一種方法是通過隊列屬性設(shè)置,隊列中所有消息都有相同的過期時間。
第二種方法是對消息進行單獨設(shè)置,每條消息TTL可以不同。如果上述兩種方法同時使用,則消息的過期時間以兩者之間TTL較小的那個數(shù)值為準。消息在隊列的生存時間一旦超過設(shè)置的TTL值,就成為dead message,消費者將無法再收到該消息。

二 單條消息設(shè)置TTL(超時時間)

針對單條消息設(shè)置TTL的方法是MessagePostProcessor對象里setExpiration(過期時間)

  1. 當隊列消息的TTL 和消息TTL都被設(shè)置,時間短的TTL設(shè)置生效。
  2. 為消息設(shè)置TTL有一個問題:RabbitMQ只對處于隊頭的消息判斷是否過期(即不會掃描隊列),所以,很可能隊列中已存在死消息,但是隊列并不知情。這會影響隊列統(tǒng)計數(shù)據(jù)的正確性,妨礙隊列及時釋放資源。
rabbitTemplate.convertAndSend("timeOut.exchange.test","key.time.out",messageProperties,
   // 設(shè)置消息過期時間: 單位:毫秒
       message1 -> {
       message1.getMessageProperties().setExpiration("10000");// 過期時間
       message1.getMessageProperties().setDeliveryMode(MessageDeliveryMode.fromInt(2)); // 持久化
   // 返回消息對象
       return message1;
       },correlationData);

對消息設(shè)置過期時間

// 為消息設(shè)置過期時間
message1.getMessageProperties().setExpiration("10000");// 過期時間

每條消息的過期時間不同,如果要刪除所有過期消息,勢必要掃描整個隊列,所以不如等到此消息即將被消費時再判定是否過期,如果過期,再進行刪除。

三 隊列設(shè)置TTL(超時時間)

通過隊列屬性設(shè)置消息TTL,在聲明隊列方法中加入x-message-ttl參數(shù)實現(xiàn)的,這個參數(shù)的單位是毫秒。

  • 過期時間單位也是毫秒,但是與消息TTL不同在于 隊列TTL值必須大于零
/* 設(shè)置隊列過期時間*/
@Bean
public Exchange queueTimeOutExchange(){
    return new DirectExchange("queueTimeOut.exchange.test",true,false);
}

// 聲明過期的隊列并定義隊列名稱
@Bean
public Queue queueTimeOutQueue(){
    // 消息過期 特殊的args
    Map<String,Object> args  = new HashMap<>(16);
    // 存活時間最大為 20 秒
    args.put("x-message-ttl",20000);
      // 設(shè)置隊列可以存儲的最大消息數(shù)量
    args.put("x-max-length", 10);
    return new Queue("queueTimeOut.queue.test"
            ,true,false,false,args);
}

@Bean
public Binding queueTimeOutBinding(){
    return new Binding("queueTimeOut.queue.test",
            Binding.DestinationType.QUEUE,
            "queueTimeOut.exchange.test",
            "key.queuetime.out",null);
}

對隊列設(shè)置過期時間

@Bean
public Queue queueTimeOutQueue(){
    // 消息過期 特殊的args
    Map<String,Object> args  = new HashMap<>(16);
    // 存活時間最大為 20 秒
    args.put("x-message-ttl",20000);
      // 設(shè)置隊列可以存儲的最大消息數(shù)量
    args.put("x-max-length", 10);
    return new Queue("queueTimeOut.queue.test"
            ,true,false,false,args);
}

一旦消息過期,就會從隊列中抹去。因為隊列中已過期的消息肯定在隊列頭部,RabbitMQ只要定期從隊頭開始掃描是否有過期消息即可。文章來源地址http://www.zghlxwxcb.cn/news/detail-700645.html

到了這里,關(guān)于Springboot與RabbitMQ消息超時時間、隊列消息超時時間的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • MQ消息隊列,以及RabbitMQ詳細(中1)五種rabbitMQ實用模型

    MQ消息隊列,以及RabbitMQ詳細(中1)五種rabbitMQ實用模型

    書接上文,展示一下五種模型我使用的是spring could 微服務(wù)的框架 文章說明: ? ? ? ? 本文章我會分享總結(jié)5種實用的rabbitMQ的實用模型 1、hello world簡單模型 2、work queues工作隊列 3、Publish/Subscribe發(fā)布訂閱模型 4、Routing路由模型 5、Topics 主題模型 (贈送) 6、消息轉(zhuǎn)換器 Rabbi

    2024年02月05日
    瀏覽(39)
  • mq 消息隊列 mqtt emqx ActiveMQ RabbitMQ RocketMQ

    十幾年前,淘寶的notify,借鑒ActiveMQ。京東的ActiveMQ集群幾百臺,后面改成JMQ。 Linkedin的kafka,因為是scala,國內(nèi)很多人不熟。淘寶的人把kafka用java寫了一遍,取名metaq,后來再改名RocketMQ。 總的來說,三大原因,語言、潮流、生態(tài)。 MQ這種東西,當你的消息量不大的時候,用啥

    2024年02月12日
    瀏覽(17)
  • .NetCore 使用 RabbitMQ (交換機/隊列/消息持久化+mq高級特性+死信隊列+延遲隊列)

    .NetCore 使用 RabbitMQ (交換機/隊列/消息持久化+mq高級特性+死信隊列+延遲隊列)

    目錄 一、安裝mq 二、實操 1、簡單模式 2、工作模式 3、fanout扇形模式(發(fā)布訂閱) 4、direct路由模式也叫定向模式 5、topic主題模式也叫通配符模式(路由模式的一種) 6、header 參數(shù)匹配模式 7、延時隊列(插件方式實現(xiàn)) 參考資料: 1、我的環(huán)境是使用VMware安裝的Centos7系統(tǒng)。MQ部署

    2023年04月09日
    瀏覽(111)
  • 【MQ 系列】SpringBoot + RabbitMq 消息確認/事務(wù)機制的使用姿勢

    【MQ 系列】SpringBoot + RabbitMq 消息確認/事務(wù)機制的使用姿勢

    我們知道 RabbitMq 提供了兩種機制,來確保發(fā)送端的消息被 brocke 正確接收,本文將主要介紹,在消息確認和事物兩種機制的場景下,發(fā)送消息的使用姿勢 首先創(chuàng)建一個 SpringBoot 項目,用于后續(xù)的演示 springboot 版本為 2.2.1.RELEASE rabbitmq 版本為? 3.7.5 ? 依賴配置文件 pom.xml 在 a

    2024年01月18日
    瀏覽(24)
  • 【學(xué)習(xí)日記2023.6.19】 之 RabbitMQ服務(wù)異步通信_消息可靠性_死信交換機_惰性隊列_MQ集群

    【學(xué)習(xí)日記2023.6.19】 之 RabbitMQ服務(wù)異步通信_消息可靠性_死信交換機_惰性隊列_MQ集群

    消息隊列在使用過程中,面臨著很多實際問題需要思考: 消息從發(fā)送,到消費者接收,會經(jīng)歷多個過程: 其中的每一步都可能導(dǎo)致消息丟失,常見的丟失原因包括: 發(fā)送時丟失: 生產(chǎn)者發(fā)送的消息未送達exchange 消息到達exchange后未到達queue MQ宕機,queue將消息丟失 consumer接收

    2024年02月11日
    瀏覽(98)
  • 消息隊列-RabbitMQ:延遲隊列、rabbitmq 插件方式實現(xiàn)延遲隊列、整合SpringBoot

    消息隊列-RabbitMQ:延遲隊列、rabbitmq 插件方式實現(xiàn)延遲隊列、整合SpringBoot

    1、延遲隊列概念 延時隊列內(nèi)部是有序的 , 最重要的特性 就體現(xiàn)在它的 延時屬性 上,延時隊列中的元素是希望在指定時間到了以后或之前取出和處理,簡單來說, 延時隊列就是用來存放需要在指定時間被處理的元素的隊列。 延遲隊列使用場景: 訂單在十分鐘之內(nèi)未支付則

    2024年02月22日
    瀏覽(19)
  • rabbitmq基礎(chǔ)7——隊列和消息過期時間設(shè)置、死信隊列、延遲隊列、優(yōu)先級隊列、回調(diào)隊列、惰性隊列

    rabbitmq基礎(chǔ)7——隊列和消息過期時間設(shè)置、死信隊列、延遲隊列、優(yōu)先級隊列、回調(diào)隊列、惰性隊列

    這里過一個知識點——過期時間,即對消息或隊列設(shè)置過期時間(TTL)。一旦消息過期,消費就無法接收到這條消息,這種情況是絕不允許存在的,所以官方就出了一個對策——死信隊列,死信隊列最初出現(xiàn)的意義就是為了應(yīng)對消息過期丟失情況的手段之一。 那么過期時間具

    2024年02月03日
    瀏覽(100)
  • SpringBoot: RabbitMQ消息隊列之同時消費多條消息

    1. basicQos預(yù)取方法參數(shù)解析 basicQos(int prefetchCount) basicQos(int prefetchCount, boolean global) basicQos(int prefetchSize, int prefetchCount, boolean global) 參數(shù): prefetchSize:可接收消息的大小 prefetchCount:處理消息最大的數(shù)量。 global:是不是針對整個Connection的,因為一個Connection可以有多個Channel,如

    2024年02月01日
    瀏覽(26)
  • SpringBoot RabbitMQ 實現(xiàn)消息隊列功能

    作者:禪與計算機程序設(shè)計藝術(shù) 在企業(yè)級應(yīng)用中,為了提升系統(tǒng)性能、降低響應(yīng)延遲、改善用戶體驗、增加系統(tǒng)的穩(wěn)定性、提高資源利用率等方面所需的功能之一就是使用消息隊列。RabbitMQ是一個開源的AMQP(Advanced Message Queuing Protocol)的實現(xiàn)消息隊列,它是用Erlang語言開發(fā)的。

    2024年02月09日
    瀏覽(22)
  • 【SpringBoot筆記29】SpringBoot集成RabbitMQ消息隊列

    這篇文章,主要介紹SpringBoot如何集成RabbitMQ消息隊列。 目錄 一、集成RabbitMQ 1.1、引入amqp依賴 1.2、添加連接信息 1.3、添加RabbitMQ配置類

    2023年04月08日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包