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

Rabbitmq 延遲隊列---插件

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

? ? ? ? 解決沒法優(yōu)先發(fā)送延時時間短的消息。文章來源地址http://www.zghlxwxcb.cn/news/detail-524957.html

  • 插件安裝
下載:https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases/tag/v3.8.0
將插件放入:/usr/lib/rabbitmq/lib/rabbitmq_server-3.8.8/plugins下
進入目錄:cd /usr/lib/rabbitmq/lib/rabbitmq_server-3.8.8/plugins
安裝:rabbitmq-plugins enable rabbitmq_delayed_message_exchange
重啟:systemctl restart rabbitmq-server
  • 配置類


import org.springframework.amqp.core.*;
import org.springframework.beans.factory.annotation.CustomAutowireConfigurer;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.HashMap;
import java.util.Map;


@Configuration
public class DelayConfig {
    //死信隊列
    public static final String DELAY_QUEUE = "DELAY_QUEUE";
    //死信交換機
    public static final String DELAY_EXCHANGE = "DELAY_EXCHANGE";
    //死信routingKey
    public static final String DELAY_ROUNTING_KEY = "DELAY_ROUNTING_KEY";


    //聲明交換機
    @Bean
    public CustomExchange delayEchange() {
        Map<String, Object> arguments = new HashMap<>();
        arguments.put("x-delayed-type", "direct");
        //1.交換機名稱
        //2.交換機類型
        //3.是否需要持久化
        //4.是否需要自動刪除
        //5.其他參數(shù)
        return new CustomExchange(DELAY_EXCHANGE, "x-delayed-message", true, false, arguments);
    }


    //聲明隊列
    @Bean
    public Queue delayQueue() {
        //創(chuàng)建隊列
        return new Queue(DELAY_QUEUE);
    }


    //綁定隊列
    @Bean
    public Binding delayBindingQueue(@Qualifier("delayQueue") Queue delayQueue, @Qualifier("delayEchange") CustomExchange delayEchange) {
        return BindingBuilder.bind(delayQueue).to(delayEchange).with(DELAY_ROUNTING_KEY).noargs();
    }

}
  • 生產(chǎn)者
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 *  延遲隊列----插件
 *
 *
 **/
@Slf4j
@RestController
@RequestMapping("/delayed")
public class SendDelayMessageController {

    @Autowired
    private RabbitTemplate rabbitTemplate;

    //延遲隊列
    @GetMapping("/sendExpireMsg/{message}/{ttlTime}")
    public void sendExpireMsg(@PathVariable String message, @PathVariable Integer ttlTime) {
        log.info("發(fā)送定時消息");
        rabbitTemplate.convertAndSend(DelayConfig.DELAY_EXCHANGE, DelayConfig.DELAY_ROUNTING_KEY, "消息來自定時消息:" + message, msg -> {
            //發(fā)消息的時候,延遲時長
            msg.getMessageProperties().setDelay(ttlTime);
            return msg;
        });
    }

}
  • 消費者
import cn.my.config.rabbitmq.delaybyplugin02.DelayConfig;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;


@Slf4j
@Component
public class DelayConsume {

    @Autowired
    private StringRedisTemplate stringRedisTemplate;



    //接收消息
    @RabbitListener(queues = DelayConfig.DELAY_QUEUE)
    public void receiveDelay(Message msg) {

        String message = new String(msg.getBody());
        log.info("接收到了插件延遲隊列消息:" + message);
    }
}

到了這里,關(guān)于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)文章

  • liunx+docker+rabbitmq安裝延遲隊列插件

    liunx+docker+rabbitmq安裝延遲隊列插件

    前言 在這篇文章中,我們將討論如何在 Linux 系統(tǒng)上安裝 Docker 和 RabbitMQ,并設(shè)置延遲隊列。 Docker 是一個開放源代碼的軟件,它可以使應(yīng)用程序的部署更加簡單,而 RabbitMQ 是一個開放源代碼的消息代理軟件,它接受和轉(zhuǎn)發(fā)消息。 延遲隊列是一種在特定的延遲之后才開始處理

    2024年02月11日
    瀏覽(19)
  • Docker中為RabbitMQ安裝rabbitmq_delayed_message_exchange延遲隊列插件

    Docker中為RabbitMQ安裝rabbitmq_delayed_message_exchange延遲隊列插件

    1、前言 rabbitmq_delayed_message_exchange是一款向RabbitMQ添加延遲消息傳遞(或計劃消息傳遞)的插件。 插件下載地址:https://www.rabbitmq.com/community-plugins.html 1、下載插件 首先需要確定我們當前使用的RabbitMQ的版本,我們可以直接登錄Web端的管理界面查看版本 ? 也可以在RabbitMQ容器中

    2024年02月12日
    瀏覽(27)
  • 【RabbitMQ】RabbitMQ高級:死信隊列和延遲隊列

    【RabbitMQ】RabbitMQ高級:死信隊列和延遲隊列

    在電商平臺下單,訂單創(chuàng)建成功,等待支付,一般會給30分鐘的時間,開始倒計時。如果在這段時間內(nèi)用戶沒有支付,則默認訂單取消。 該如何實現(xiàn)? 定期輪詢(數(shù)據(jù)庫等) 用戶下單成功,將訂單信息放入數(shù)據(jù)庫,同時將支付狀態(tài)放入數(shù)據(jù)庫,用戶付款更改數(shù)據(jù)庫狀態(tài)。定

    2024年01月17日
    瀏覽(19)
  • 【RabbitMQ教程】第六章 —— RabbitMQ - 延遲隊列

    【RabbitMQ教程】第六章 —— RabbitMQ - 延遲隊列

    ?????????????????????????????????????????????????????????????????? ?? 【 R a b b i t M Q 教 程 】 第 六 章 — — R a b b i t M Q ? 延 遲 隊 列 color{#FF1493}{【RabbitMQ教程】第六章 —— RabbitMQ - 延遲隊列} 【 R a b b i t M Q 教 程 】 第 六 章 — — R a

    2024年02月09日
    瀏覽(15)
  • 【RabbitMQ】 RabbitMQ 消息的延遲 —— 深入探索 RabbitMQ 的死信交換機,消息的 TTL 以及延遲隊列

    【RabbitMQ】 RabbitMQ 消息的延遲 —— 深入探索 RabbitMQ 的死信交換機,消息的 TTL 以及延遲隊列

    消息隊列是現(xiàn)代分布式應(yīng)用中的關(guān)鍵組件,用于實現(xiàn)異步通信、解耦系統(tǒng)組件以及處理高并發(fā)請求。消息隊列可以用于各種應(yīng)用場景,包括任務(wù)調(diào)度、事件通知、日志處理等。在消息隊列的應(yīng)用中,有時需要實現(xiàn)消息的延遲處理、處理未能成功消費的消息等功能。 本文將介紹

    2024年02月05日
    瀏覽(96)
  • RabbitMQ延遲隊列,死信隊列配置

    延遲和死信隊列的配置 延遲隊列有效期一分鐘,后進入死信隊列,如果異常就進入異常隊列 異常隊列配置類

    2024年02月14日
    瀏覽(28)
  • RabbitMQ-延遲隊列的使用

    RabbitMQ-延遲隊列的使用

    目錄 一、使用場景 ?二、第一種方式:創(chuàng)建具有超時功能且綁定死信交換機的消息隊列 三、第二種方式:創(chuàng)建通用延時消息 四、第三種方式:使用rabbitmq的延時隊列插件,實現(xiàn)同一個隊列中有多個不同超時時間的消息,并按時間超時順序出隊 4.1?下載延遲插件 4.2?安裝插件

    2024年04月14日
    瀏覽(18)
  • RabbitMQ延遲隊列

    RabbitMQ延遲隊列

    目錄 一、概念 二、使用場景 三、RabbitMQ 中的 TTL (一)隊列設(shè)置 TTL (二)消息設(shè)置 TTL (三)兩者的區(qū)別 四、整合SpringBoot實現(xiàn)延遲隊列 (一)創(chuàng)建項目 (二)添加依賴 (三)修改配置文件 (四)添加Swagger配置類 五、隊列TTL (一)代碼架構(gòu)圖 (二)配置文件類 (三)

    2024年02月03日
    瀏覽(17)
  • RabbitMQ - 延遲隊列

    RabbitMQ - 延遲隊列

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

    2024年02月09日
    瀏覽(21)
  • RabbitMQ學(xué)習(xí)-延遲隊列

    RabbitMQ學(xué)習(xí)-延遲隊列

    延遲隊列 背:也就是給隊列設(shè)置個過期時間,然后到時間消息變成死信,消費死信隊列中的消息就行,再沒什么玩意,演示隊列優(yōu)化就是不給隊列這只TTL,再生產(chǎn)者代碼中消息里面設(shè)置消息TTL, 因為 RabbitMQ 只會檢查第一個消息是否過期 ,如果過期則丟到死信隊列, 如果第

    2024年02月07日
    瀏覽(12)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包