最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

RabbitMQ實(shí)現(xiàn)Work Queue工作隊(duì)列的示例詳解

 更新時(shí)間:2023年01月10日 10:28:56   作者:小威要向諸佬學(xué)習(xí)呀  
工作隊(duì)列(又稱任務(wù)隊(duì)列)的主要思想是避免立即執(zhí)行資源密集型任務(wù),而不得不等待它完成。本篇文章將記錄和分享RabbitMQ工作隊(duì)列相關(guān)的知識點(diǎn),希望對大家有所幫助

RabbitMQ Work Queue工作隊(duì)列

工作隊(duì)列(又稱任務(wù)隊(duì)列)的主要思想是避免立即執(zhí)行資源密集型任務(wù),而不得不等待它完成。

相反我們安排任務(wù)在之后執(zhí)行。我們把任務(wù)封裝為消息并將其發(fā)送到隊(duì)列。在后臺運(yùn)行的工作進(jìn)程將彈出任務(wù)并最終執(zhí)行作業(yè)。當(dāng)有多個(gè)工作線程時(shí),這些工作線程將一起處理這些任務(wù)。

多個(gè)消費(fèi)者綁定到一個(gè)隊(duì)列,同一條消息只會被一個(gè)消費(fèi)者處理。

但是對于工作隊(duì)列,可以提高消息的處理速度,避免隊(duì)列中的消息堆積。

我們以一個(gè)例子來解釋work queue工作隊(duì)列。在生產(chǎn)者的服務(wù)中添加測試方法,通過循環(huán)的方式,向名為simple.queue隊(duì)列中發(fā)送50條消息,代碼和詳細(xì)描述如下:

package cn.itcast.mq.spring;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@SpringBootTest
@RunWith(SpringRunner.class)
public class SpringAmqpTest {
    @Autowired
    private RabbitTemplate rabbitTemplate;
    @Test
    public void testSendMessage2WorkQueue() throws InterruptedException {
        String queueName="simple.queue";//隊(duì)列名稱
        String message = "hello, message_";//發(fā)送的消息
        for (int i=1;i<=50;i++){
            rabbitTemplate.convertAndSend(queueName,message+i);
            Thread.sleep(20);
        }
    }
}

在消費(fèi)者的服務(wù)模塊中,定義兩個(gè)消息監(jiān)聽,分別為listenSimpleQueue1和listenSimpleQueue2,讓它們都監(jiān)聽simple.queue隊(duì)列,并且設(shè)置休眠時(shí)間,使得消費(fèi)者1每秒處理50條消息,消費(fèi)者2每秒處理10條消息。

package cn.itcast.mq.listener;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
import java.time.LocalTime;
@Component
public class SpringRabbitListener {
    @RabbitListener(queues="simple.queue")
    public void listenSimpleQueue1(String msg) throws InterruptedException {
        System.out.println("消費(fèi)者1已經(jīng)接收到simple.queue的消息:[" + msg +  "]"+ LocalTime.now());
        Thread.sleep(20);
    }
    @RabbitListener(queues="simple.queue")
    public void listenSimpleQueue2(String msg) throws InterruptedException {
        System.err.println("消費(fèi)者2已經(jīng)接收到simple.queue的消息:[" + msg +  "]"+LocalTime.now());
        Thread.sleep(200);
    }
}

消費(fèi)者的application.yaml文件,設(shè)置消費(fèi)者每次只能獲取一條消息,生產(chǎn)者和消費(fèi)者的配置文件相似。

logging:
  pattern:
    dateformat: MM-dd HH:mm:ss:SSS
spring:
  rabbitmq:
    host: 192.168.220.13*
    port: 5672
    username: user
    password: ******
    virtual-host: /
    Listener:
      simple:
        prefetch: 1 #每次只能獲取一條消息,處理完成才能獲取下一條消息 控制消費(fèi)者預(yù)取消息的上限

處理完成后,運(yùn)行項(xiàng)目,可以得到消費(fèi)者1和消費(fèi)者2都能消費(fèi)消息,并且可以根據(jù)休眠時(shí)間有序進(jìn)行工作。

到此這篇關(guān)于RabbitMQ實(shí)現(xiàn)Work Queue工作隊(duì)列的示例詳解的文章就介紹到這了,更多相關(guān)RabbitMQ Work Queue內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring AOP實(shí)現(xiàn)原理解析

    Spring AOP實(shí)現(xiàn)原理解析

    這篇文章主要為大家詳細(xì)介紹了Spring AOP的實(shí)現(xiàn)原理,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Java計(jì)算幾何圖形面積的實(shí)例代碼

    Java計(jì)算幾何圖形面積的實(shí)例代碼

    這篇文章主要介紹了Java計(jì)算幾何圖形面積的實(shí)例代碼,需要的朋友可以參考下
    2014-03-03
  • Java中Volatile關(guān)鍵字能保證原子性嗎

    Java中Volatile關(guān)鍵字能保證原子性嗎

    這篇文章主要介紹了Java中Volatile關(guān)鍵字能保證原子性嗎,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • java中的常用集合類整理

    java中的常用集合類整理

    本篇文章給大家?guī)淼膬?nèi)容是關(guān)于java中List集合及其實(shí)現(xiàn)類的方法介紹(附代碼),有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對你有所幫助。下面我們就來學(xué)習(xí)一下吧,希望能給你帶來幫助
    2021-06-06
  • java反射簡單實(shí)例

    java反射簡單實(shí)例

    這篇文章主要介紹了java反射機(jī)制,以一個(gè)簡單實(shí)例形式分析了Java反射的原理與實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2015-02-02
  • java加載properties文件的六種方法總結(jié)

    java加載properties文件的六種方法總結(jié)

    這篇文章主要介紹了java加載properties文件的六種方法總結(jié)的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • JAVA基于Slack實(shí)現(xiàn)異常日志報(bào)警詳解

    JAVA基于Slack實(shí)現(xiàn)異常日志報(bào)警詳解

    這篇文章主要為大家介紹了JAVA基于Slack實(shí)現(xiàn)異常日志報(bào)警詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • Java Spring的數(shù)據(jù)庫開發(fā)詳解

    Java Spring的數(shù)據(jù)庫開發(fā)詳解

    這篇文章主要介紹了Spring的數(shù)據(jù)庫開發(fā),主要圍繞SpringJDBC和Spring Jdbc Template兩個(gè)技術(shù)來講解,文中有詳細(xì)的代碼示例,需要的小伙伴可以參考一下
    2023-04-04
  • 深入剖析java中的集合框架

    深入剖析java中的集合框架

    下面小編就為大家?guī)硪黄钊肫饰鰆ava中的集合框架。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-05-05
  • IDEA之IDEA連接gitlab協(xié)同開發(fā)方式

    IDEA之IDEA連接gitlab協(xié)同開發(fā)方式

    通過IDEA克隆GitLab項(xiàng)目實(shí)現(xiàn)代碼協(xié)同開發(fā)相較于使用SourceTree,?通過IDEA連接GitLab進(jìn)行代碼協(xié)同開發(fā)更顯便捷,方法包括通過VersionControl創(chuàng)建新項(xiàng)目,輸入項(xiàng)目的git?HTTP地址和本地路徑,測試連接成功后克隆項(xiàng)目,修改代碼后
    2024-11-11

最新評論

鄂尔多斯市| 平顶山市| 靖安县| 永寿县| 鞍山市| 贵州省| 洛川县| 罗城| 达孜县| 沾益县| 砚山县| 罗甸县| 嘉黎县| 汕头市| 永州市| 江北区| 长沙市| 宁德市| 时尚| 长宁区| 迁西县| 商南县| 大新县| 濉溪县| 荃湾区| 临沭县| 涡阳县| 玉龙| 东乡族自治县| 启东市| 犍为县| 方正县| 旺苍县| 榆树市| 兴文县| 浮山县| 通城县| 叶城县| 通州市| 德格县| 伊宁市|