日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

RabbitMQ代碼篇之過期時間,死信隊列,延遲隊列,優先級隊列的基本使用

來源: 責編: 時間:2024-03-18 09:38:28 171觀看
導讀這篇是 代碼篇 ,略過 Direct,Fanout,Topic 這幾種基本隊列的使用介紹,但是 Github 倉庫上可以查看到的。圖片<( ̄︶ ̄)↗[GO!]沖沖沖~死信隊列死信是指有這三個特點的消息消息被拒絕,且沒有重新入隊(投遞)消息過期消息隊列滿了// n

這篇是 代碼篇 ,略過 Direct,Fanout,Topic 這幾種基本隊列的使用介紹,但是 Github 倉庫上可以查看到的。uYw28資訊網——每日最新資訊28at.com

圖片圖片uYw28資訊網——每日最新資訊28at.com

<( ̄︶ ̄)↗[GO!]uYw28資訊網——每日最新資訊28at.com

圖片沖沖沖~uYw28資訊網——每日最新資訊28at.com

死信隊列

死信是指有這三個特點的消息uYw28資訊網——每日最新資訊28at.com

  • 消息被拒絕,且沒有重新入隊(投遞)
  • 消息過期
  • 消息隊列滿了
// nack 返回 false,并放棄重新回到隊列channel.basicNack(deliveryTag, false, false);//拒絕,不重新入隊列channel.basicReject(deliveryTag, false);

死信交換機 —— DLX:Dead-Letter-ExchangeuYw28資訊網——每日最新資訊28at.com

@Beanpublic DirectExchange directExchange2() {    /**     * 交換機名,后面兩個是默認值就:持久化,不自動刪除     */    return new DirectExchange(RabbitMQConstants.DIRECT_EXCHANGE2, true, false);}@Beanpublic Queue directQueue2() {    return QueueBuilder            .durable(RabbitMQConstants.DIRECT_QUEUE2)            .deadLetterExchange(RabbitMQConstants.DLX_EXCHANGE)            .deadLetterRoutingKey(RabbitMQConstants.DLX_ROUTING_KEY)            .build();}/** * 將隊列綁定到交換機上 * * @return */@Beanpublic Binding directBinding2() {    return BindingBuilder.            bind(directQueue2()).            to(directExchange2()).            with(RabbitMQConstants.DIRECT_BINDING_KEY2);}

過期時間

兩種設置方式uYw28資訊網——每日最新資訊28at.com

  • 創建隊列時設置,消息會被排序加入到隊列頭部,短的在前
  • 發送消息時設置,時間到期不會立刻刪除,而是在推送消息時刪除

同時設置的話,過期時間已短的為準uYw28資訊網——每日最新資訊28at.com

/** * 創建隊列時設置 * @return */@Beanpublic Queue ttlQueue() {    Map<String, Object> args = new HashMap<>();    //設置消息過期時間    args.put("x-message-ttl", 5000);    //設置死信交換機    args.put("x-dead-letter-exchange", RabbitMQConstants.DLX_EXCHANGE);    //設置死信 routing_key    args.put("x-dead-letter-routing-key", RabbitMQConstants.DLX_ROUTING_KEY);    return new Queue(RabbitMQConstants.TTL_QUEUE, true, false, false, args);}
/** * 發送消息時設置 * @return */public void sendMessage2() throws JsonProcessingException {    User user = new User();    ObjectMapper objectMapper = new ObjectMapper();    byte[] bytes = objectMapper.writeValueAsBytes(user);    // 10 s 后過期    Message message =            MessageBuilder.withBody(bytes)                    .setExpiration("10000").build();    // 交換機,路由鍵,信息    rabbitTemplate.convertAndSend(            RabbitMQConstants.DIRECT_EXCHANGE2,            RabbitMQConstants.DIRECT_ROUTING_KEY2,            message    );}

效果演示

圖片圖片uYw28資訊網——每日最新資訊28at.com

隊列 5 秒延遲的效果uYw28資訊網——每日最新資訊28at.com

圖片圖片uYw28資訊網——每日最新資訊28at.com

延遲隊列

兩種方案實現uYw28資訊網——每日最新資訊28at.com

  • 利用 死信隊列+過期時間 去處理,消息過期被轉發到死信交換機,死信交換機路由到死信隊列進行處理
  • 使用插件 rabbitmq_delayed_message_exchange

插件可以在這里找到

本文鏈接:http://www.www897cc.com/showinfo-26-76494-0.htmlRabbitMQ代碼篇之過期時間,死信隊列,延遲隊列,優先級隊列的基本使用

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 關于Java程序服務預熱那些事

下一篇: 想進阿里?先搞懂Spring Bean的循環依賴!

標簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 集安市| 新田县| 屏东市| 崇阳县| 东源县| 新野县| 呼图壁县| 枞阳县| 孝感市| 丰原市| 德庆县| 通江县| 图们市| 镇平县| 湖北省| 堆龙德庆县| 桦甸市| 潼南县| 年辖:市辖区| 鹤山市| 襄城县| 兖州市| 沈丘县| 德州市| 崇左市| 河源市| 德化县| 闵行区| 清苑县| 宜州市| 龙川县| 台东市| 井冈山市| 江门市| 山阳县| 南昌县| 潼南县| 滦平县| 浦江县| 盐亭县| 刚察县|