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

RabbitMQ+springboot用延遲插件實現(xiàn)延遲消息的發(fā)送

這篇具有很好參考價值的文章主要介紹了RabbitMQ+springboot用延遲插件實現(xiàn)延遲消息的發(fā)送。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

延遲隊列:其實就是死信隊列中消息過期的特殊情況

延遲隊列應用場景:

RabbitMQ+springboot用延遲插件實現(xiàn)延遲消息的發(fā)送,消息隊列rabbitmq,java-rabbitmq,rabbitmq,spring boot
可以用死信隊列來實現(xiàn),不過死信隊列要等上一個消息消費成功,才會進行下一個消息的消費,這時候就需要用到延遲插件了,不過要線在docker上裝一個插件

安裝過程(Linux【Docker】)

前置條件是在Docker中部署過RabbitMq。

1、打開你的遠程工具,首先查看docker中已有的容器,主要是為了查看rabbitmq的容器ID

RabbitMQ+springboot用延遲插件實現(xiàn)延遲消息的發(fā)送,消息隊列rabbitmq,java-rabbitmq,rabbitmq,spring boot

2、將本地下載好的壓縮包傳到服務器某文件夾下,然后將其復制到Docker中的RabbitMq容器中的plugins文件夾下。

docker cp /home/rabbitmq_delayed_message_exchange-3.8.0.ez a687ef46141b:/plugins

RabbitMQ+springboot用延遲插件實現(xiàn)延遲消息的發(fā)送,消息隊列rabbitmq,java-rabbitmq,rabbitmq,spring boot

3、進入容器查看該目錄下是否有該壓縮包。

進入容器命令:(通過容器號或者容器名)

docker exec -it a687ef46141b bash

RabbitMQ+springboot用延遲插件實現(xiàn)延遲消息的發(fā)送,消息隊列rabbitmq,java-rabbitmq,rabbitmq,spring boot

4、同樣在容器中的命令行執(zhí)行一下命令添加插件。

rabbitmq-plugins enable rabbitmq_delayed_message_exchange

RabbitMQ+springboot用延遲插件實現(xiàn)延遲消息的發(fā)送,消息隊列rabbitmq,java-rabbitmq,rabbitmq,spring boot

5、退出容器,重啟該容器。

RabbitMQ+springboot用延遲插件實現(xiàn)延遲消息的發(fā)送,消息隊列rabbitmq,java-rabbitmq,rabbitmq,spring boot

6、在管理端即同樣可以看到新增了一種交換機模式。

RabbitMQ+springboot用延遲插件實現(xiàn)延遲消息的發(fā)送,消息隊列rabbitmq,java-rabbitmq,rabbitmq,spring boot

總結:以上就是RabbitMQ的延遲插件的安裝過程!

基于插件的延遲隊列DEMO

成功安裝RabbitMQ的延遲插件之后,我們就可以嘗試寫一個延遲隊列來驗證一下是否可以解決上述問題。

首先我們的測試環(huán)境是在一個Springboot的框架下完成!

1、最先寫配置類

/**
 * 定義延遲交換機
 */
@Configuration
public class RabbitMQDelayedConfig {
    //隊列
    private static final String DELAYQUEUE = "delayedqueue";
    //交換機
    private static final String DELAYEXCHANGE = "delayedExchange";
    @Bean
    public Queue delayqueue(){return new Queue(DELAYQUEUE);}
    //自定義延遲交換機
    @Bean
    public CustomExchange delayedExchange(){
        Map<String, Object> arguments = new HashMap<>();
        arguments.put("x-delayed-type","direct");
        /**
         * 1、交換機名稱
         * 2、交換機類型
         * 3、是否需要持久化
         * 4、是否需要自動刪除
         * 5、其他參數(shù)
         */
        return new CustomExchange(DELAYEXCHANGE,"x-delayed-message",true,false,arguments);
    }
    //綁定隊列和延遲交換機
    @Bean
    public Binding delaybinding(){
        return BindingBuilder.bind(delayqueue()).to(delayedExchange()).with("sectest").noargs();
    }
}

2、先寫生產(chǎn)者

/**
 * 基于插件的延遲隊列
 * 消息生產(chǎn)者
 */
@Service
@Slf4j
public class DelayMQSender {
    @Autowired
    private RabbitTemplate rabbitTemplate;

    public void sendmsg(String message,Integer delaytime){
        log.info("當前時間:{},發(fā)送時長{}信息給延遲隊列:{}",new Date().toString(),delaytime,message);
        rabbitTemplate.convertAndSend("delayedExchange","sectest",message,msg->{
            //設置發(fā)送消息的延長時間 單位:ms
            msg.getMessageProperties().setDelay(delaytime);
            return msg;
        });
    }
}

3、再寫消費者

/**
 * 基于插件的延遲隊列
 * 消息的消費者
 */
@Service
@Slf4j
public class DelayMQReceiver {
    @RabbitListener(queues = "delayedqueue")
    public void receivemsg(Message messages){
        String msg = new String(messages.getBody());
        log.info("當前時間:{},接收時長信息給延遲隊列:{}",new Date().toString(),msg);
    }
}

4、進行測試

將模擬請求放在了一個簡易的網(wǎng)頁上,點擊后輸出如下結果,證明當先發(fā)送了20s延時的消息,再發(fā)送2s延時的消息,在2s后消息正常被消費,基于插件的延遲隊列完美解決了問題。

RabbitMQ+springboot用延遲插件實現(xiàn)延遲消息的發(fā)送,消息隊列rabbitmq,java-rabbitmq,rabbitmq,spring boot

RabbitMQ+springboot用延遲插件實現(xiàn)延遲消息的發(fā)送,消息隊列rabbitmq,java-rabbitmq,rabbitmq,spring boot

**【思考】:**如果在實際業(yè)務場景中使用延遲隊列的話,那就需要服務端在消息被消費之后主動告訴前端消費的結果,如果是這樣的話,那么Ajxs的通信方式是單雙工通信,只能前端主動訪問后端并返回結果,后端無法主動發(fā)送消息,應該使用Websocket來進行通信才可,websocket是長連接,不同于http的短連接,可以實現(xiàn)全雙工通信,前后端都可以主動發(fā)送消息。文章來源地址http://www.zghlxwxcb.cn/news/detail-685131.html

到了這里,關于RabbitMQ+springboot用延遲插件實現(xiàn)延遲消息的發(fā)送的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領支付寶紅包贊助服務器費用

相關文章

  • Springboot集成rabbitmq——實現(xiàn)延遲隊列

    Springboot集成rabbitmq——實現(xiàn)延遲隊列

    目錄 1.rabbitmq簡介 2.延遲隊列 3.Springboot集成rabbitmq 4.以死信隊列形式實現(xiàn) 5.以插件形式實現(xiàn) ?MQ(message queue),從字面意思上看,本質是個隊列,遵從先入先出的規(guī)則,只不過隊列中存放的內(nèi)容是 message 而已,是一種跨進程的通信機制,用于上下游傳遞消息。RabbitMq是開發(fā)中常用

    2024年02月05日
    瀏覽(26)
  • 消息隊列中間件,RabbitMQ的使用,死信隊列,延遲隊列,利用枚舉實現(xiàn)隊列,交換機,RountKey的聲明

    消息隊列中間件,RabbitMQ的使用,死信隊列,延遲隊列,利用枚舉實現(xiàn)隊列,交換機,RountKey的聲明

    目錄 0.交換機種類和區(qū)別 1.聲明隊列和交換機以及RountKey 2.初始化循環(huán)綁定 3.聲明交換機 4.監(jiān)聽隊列 4.1 監(jiān)聽普通隊列 4.2監(jiān)聽死信隊列 ?5.削峰填谷的實現(xiàn) Direct Exchange(直連交換機) : 直連交換機將消息發(fā)送到與消息的路由鍵完全匹配的隊列。它是最簡單的交換機類型之一。

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

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

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

    2024年02月05日
    瀏覽(96)
  • Rabbitmq 延遲隊列---插件

    ? ? ? ? 解決沒法優(yōu)先發(fā)送延時時間短的消息。 插件安裝 配置類 生產(chǎn)者 消費者

    2024年02月12日
    瀏覽(21)
  • Centos安裝RabbitMQ,JavaSpring發(fā)送RabbitMQ延遲延時消息,JavaSpring消費RabbitMQ消息

    Centos安裝RabbitMQ,JavaSpring發(fā)送RabbitMQ延遲延時消息,JavaSpring消費RabbitMQ消息

    erlang 和 rabbitmq 版本說明 https://www.rabbitmq.com/which-erlang.html 確認需要安裝的mq版本以及對應的erlang版本。 RabbitMQ下載地址: https://packagecloud.io/rabbitmq/rabbitmq-server Erlang下載地址: https://packagecloud.io/rabbitmq/erlang RabbitMQ延遲消息插件下載 https://github.com/rabbitmq/rabbitmq-delayed-message-exc

    2024年02月08日
    瀏覽(23)
  • Docker版RabbitMQ安裝延遲隊列插件及延遲隊列項目應用實戰(zhàn)

    Docker版RabbitMQ安裝延遲隊列插件及延遲隊列項目應用實戰(zhàn)

    在項目中經(jīng)常有延遲業(yè)務處理的背景,此時可以借助于Rabbitmq的延遲隊列進行實現(xiàn),但Rabbitmq本身并不支持延遲隊列,但可以通過安裝插件的方式實現(xiàn)延遲隊列 首先確認目前項目使用的Rabbitmq的版本,這里博主的版本是3.9.15的。 訪問 Rabbitmq的github網(wǎng)址,檢索 delay 找到插件 rabb

    2024年02月02日
    瀏覽(27)
  • 學會RabbitMQ的延遲隊列,提高消息處理效率

    學會RabbitMQ的延遲隊列,提高消息處理效率

    手把手教你,本地RabbitMQ服務搭建(windows) 消息隊列選型——為什么選擇RabbitMQ RabbitMQ靈活運用,怎么理解五種消息模型 RabbitMQ 能保證消息可靠性嗎 推或拉? RabbitMQ 消費模式該如何選擇 死信是什么,如何運用RabbitMQ的死信機制? 真的好用嗎?鮮有人提的 RabbitMQ-RPC模式 前面

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

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

    2024年02月09日
    瀏覽(24)
  • [超詳細]RabbitMQ安裝延遲消息插件

    [超詳細]RabbitMQ安裝延遲消息插件

    Community Plugins — RabbitMQ https://www.rabbitmq.com/community-plugins.html 進入以上地址以后,找到Routing里邊的rabbitmq_delayed_message_exchange然后點擊Releases ? 下載完成以后 ?然后解壓到plugins文件中 ?然后再sbin目錄下運行?rabbitmq-plugins enable rabbitmq_delayed_message_exchange ?查看交換機類型中是否有

    2024年02月07日
    瀏覽(25)
  • springboot整合rabbitmq 實現(xiàn)消息發(fā)送和消費

    Spring Boot提供了RabbitMQ的自動化配置,使得整合RabbitMQ變得非常容易。 首先,需要在pom.xml文件中引入amqp-client和spring-boot-starter-amqp依賴: 接下來需要在application.properties文件中配置RabbitMQ連接信息: 然后編寫消息發(fā)送者: 其中,my-exchange和my-routing-key是需要自己定義的交換機和

    2024年02月07日
    瀏覽(20)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包