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

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

RabbitMQ發送和接收消息的幾種方式

來源: 責編: 時間:2023-11-08 09:11:10 357觀看
導讀一、發送消息的幾種方式1.1、默認交換機和routingKey----(個人不推薦使用) 使用默認的交換機exchange或routingKey。圖片調用方法:圖片1.2、使用指定routingKey的方式發送(默認的交換機) 使用默認的交換機,routin

一、發送消息的幾種方式

1.1、默認交換機和routingKey----(個人不推薦使用)

    使用默認的交換機exchange或routingKey。pcT28資訊網——每日最新資訊28at.com

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

調用方法:pcT28資訊網——每日最新資訊28at.com

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

1.2、使用指定routingKey的方式發送(默認的交換機)

    使用默認的交換機,routingKey必須為quenue隊列的名稱。pcT28資訊網——每日最新資訊28at.com

調用方法:pcT28資訊網——每日最新資訊28at.com

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

案例:pcT28資訊網——每日最新資訊28at.com

/** * @Author yangyalin * @Description 測試發送消息(直接使用隊列發送,使用默認的交換機) routingKey:即為對列的名稱即可 **/public void testSendMsg(String message){    rabbitTemplate.convertAndSend(RabbitMQConvertConfig.TEST_QUEUE,message);}

1.3、指定交換機和routingKey的方式發送

    使用指定的交換機,若綁定routingKey,必須使用指定的模式;若沒有綁定,可設置為""。pcT28資訊網——每日最新資訊28at.com

調用方法:

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

案例:

public void sendDecreStockMessage(DecreStockFromRabbit decreStockFromRabbit){    CorrelationData correlationData = new CorrelationData();    correlationData.setId(decreStockFromRabbit.getMessageId());  /**   * exchange:交換機  routingKey:路由鍵  message:消息體內容   correlationData:消息唯一ID  **/    rabbitTemplate.convertAndSend(RabbitMQConvertConfig.ORDER_EXCHANGE,        RabbitMQConvertConfig.ORDER_ROUTINGKEY, decreStockFromRabbit,correlationData);}或:rabbitTemplate.convertAndSend("test-exchange","",message);

二、接收消息的幾種方式

2.1、默認交換機,提前創建好隊列(TestDirectQueue)

/**     * 功能描述:當消費同一個隊列的時候,可通過設置實現能則多勞,     * 消息輪詢方式訂閱     * @MethodName: process11     * @MethodParam: [testMessage]     * @Return: void     * @Author: yyalin     * @CreateDate: 2022/4/9 17:10     */    @RabbitListener(queues = "TestDirectQueue")   //監聽的隊列名稱 TestDirectQueue    public void process11(Map testMessage) throws InterruptedException {        log.info("消費者收到消息222:" + testMessage.toString());        Thread.sleep(200);    }

2.2、默認交換機,自動創建隊列(TEST_QUEUE2)

@RabbitListener(queuesToDeclare=@Queue(TopicExchangeConfig.TEST_QUEUE2))@RabbitHandlerpublic void receiveTestMsg2(@Payload String str) throws Exception{    log.info("開始接收消息。。。。。");    log.info("接收到的消息:"+str);}

2.3、自動創建交換機和隊列----(個人推薦)

    自動創建且交換機和隊列綁定,key可指定也可不指定(默認為隊列名稱)。pcT28資訊網——每日最新資訊28at.com

/******************方案二:使用注解的方式綁定隊列在交換機上*******************/    @RabbitListener(bindings = @QueueBinding(value=@Queue(name="directQueue"),            exchange=@Exchange(name="directExchange",type = ExchangeTypes.DIRECT),            key={"red", "blue"}    ))    //監聽的隊列名稱 TestDirectQueue    public void directConsumer(String message) {        log.info("消費者收到direct消息555  : " + message);    }   @RabbitListener(bindings = @QueueBinding(value=@Queue(name="topicQueue2"),            exchange=@Exchange(name="topicExchange",type = ExchangeTypes.TOPIC,ignoreDeclarationExceptions = "true"),            key="#.new"    ))    public void topicConsumer2(String message) {        log.info("消費者收到topic消息888  : " + message);    }

備注:ignoreDeclarationExceptions = "true" : 即使配置出現了錯誤也不至于整個應用程序都啟動失敗的情況。pcT28資訊網——每日最新資訊28at.com

1、channel.basicQos(0, 1, false):0表示對消息的大小無限制,1表示每次只允許消費一條,false表示該限制不作用于channel。pcT28資訊網——每日最新資訊28at.com

同時,我們采用手工ACK的方式,因為我們配置文件配置了   spring.rabbitmq.listener.simple.acknowledge-mode=manual:pcT28資訊網——每日最新資訊28at.com

2、channel.basicAck(deliveryTag, false):deliveryTag表示處理的消息條數(一般為1),從heaers中取,false表示不批量ack。pcT28資訊網——每日最新資訊28at.com

/**     * 功能描述: 消費端加上手動確認消息被接收     * @MethodName: process     * @MethodParam: [message]     * @Return: void     * @Author: yyalin     * @CreateDate: 2022/4/18 19:10     */    @RabbitListener(queues = "TestDirectQueue3")    //監聽的隊列名稱 TestDirectQueue    public void process(String message, Channel channel) throws IOException {        log.info("DirectReceiver消費者收到消息1  : " + message);        long msgId=1111L; //消息ID        try {            //手動確認消息已消費            channel.basicAck(msgId,false);        } catch (IOException e) {            //把消息失敗的消息重新放入到隊列            channel.basicNack(msgId,false,true);            e.printStackTrace();        }    }

本文鏈接:http://www.www897cc.com/showinfo-26-17666-0.htmlRabbitMQ發送和接收消息的幾種方式

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

上一篇: 一文搞定雙鏈表,讓你徹底弄懂線性表的鏈式實現

下一篇: SpringCloud Alibaba體系一覽

標簽:
  • 熱門焦點
  • 直屏旗艦來了 iQOO 12和K70 Pro同臺競技

    旗艦機基本上使用的都是雙曲面屏幕,這就讓很多喜歡直屏的愛好者在苦等一款直屏旗艦,這次,你們等到了。據博主數碼閑聊站帶來的最新爆料稱,Redmi下代旗艦K70 Pro和iQOO 12兩款手
  • SpringBoot中使用Cache提升接口性能詳解

    環境:springboot2.3.12.RELEASE + JSR107 + Ehcache + JPASpring 框架從 3.1 開始,對 Spring 應用程序提供了透明式添加緩存的支持。和事務支持一樣,抽象緩存允許一致地使用各
  • 如何正確使用:Has和:Nth-Last-Child

    我們可以用CSS檢查,以了解一組元素的數量是否小于或等于一個數字。例如,一個擁有三個或更多子項的grid。你可能會想,為什么需要這樣做呢?在某些情況下,一個組件或一個布局可能會
  • 破圈是B站頭上的緊箍咒

    來源 | 光子星球撰文 | 吳坤諺編輯 | 吳先之每年的暑期檔都少不了瞄準追劇女孩們的古偶劇集,2021年有優酷的《山河令》,2022年有愛奇藝的《蒼蘭訣》,今年卻輪到小破站抓住了追
  • 東方甄選單飛:有些鳥注定是關不住的

    文/彭寬鴻編輯/羅卿東方甄選創始人俞敏洪帶隊的“7天甘肅行”直播活動已在近日順利收官。成立后一年多時間里,東方甄選要脫離抖音自立門戶的傳聞不絕于耳,“7
  • 7月4日見!iQOO 11S官宣:“雞血版”驍龍8 Gen2+200W快充加持

    上半年已接近尾聲,截至目前各大品牌旗下的頂級旗艦都已悉數亮相,而下半年即將推出的頂級旗艦已經成為了數碼圈爆料的主流,其中就包括全新的iQOO 11S系
  • iQOO Neo8 Pro評測:旗艦雙芯加持 最強性能游戲旗艦

    【Techweb評測】去年10月,iQOO推出了一款Neo7手機,該機搭載了聯發科天璣9000+,配備獨顯芯片Pro+,帶來了同價位段最佳的游戲體驗,一經上市便受到了諸多用
  • SN570 NVMe SSD固態硬盤 價格與性能兼具

    SN570 NVMe SSD固態硬盤是西部數據發布的最新一代WD Blue系列的固態硬盤,不僅閃存技術更為精進,性能也得到了進一步的躍升。WD Blue SN570 NVMe SSD的包裝外
  • 榮耀Magic4 至臻版 首創智慧隱私通話 強勁影音系統

    2022年第一季度臨近尾聲,在該季度內,許多品牌陸續發布自己的最新產品,讓大家從全新的角度來了解當今的手機技術。手機是電子設備中,更新迭代十分迅速的一款產品,基
Top 主站蜘蛛池模板: 揭阳市| 东莞市| 江西省| 漠河县| 平乐县| 九龙县| 缙云县| 神池县| 边坝县| 漳州市| 陆丰市| 安泽县| 枝江市| 香格里拉县| 金溪县| 宜兰市| 霍林郭勒市| 曲麻莱县| 清徐县| 东丰县| 尚志市| 安远县| 安吉县| 龙岩市| 孝义市| 桃园市| 开江县| 绩溪县| SHOW| 丘北县| 麻城市| 哈尔滨市| 晴隆县| 额济纳旗| 昌平区| 东宁县| 阳江市| 尼勒克县| 南靖县| 神农架林区| 尤溪县|