chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

RabbitMQ是什么

科技綠洲 ? 來(lái)源:Java技術(shù)指北 ? 作者:Java技術(shù)指北 ? 2023-09-25 14:36 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在工作中經(jīng)常會(huì)用到消息隊(duì)列處理各種問(wèn)題,今天指北君帶領(lǐng)大家來(lái)學(xué)一個(gè)很常用到的技術(shù)-RabbitMQ;接下來(lái)還會(huì)有關(guān)于RabbitMQ的系列教程,對(duì)你有幫助的話(huà)記得關(guān)注哦~

RabbitMQ是什么

隊(duì)列 :一種數(shù)據(jù)結(jié)構(gòu),先進(jìn)先出。

消息隊(duì)列 :簡(jiǎn)單的說(shuō)就是用來(lái)進(jìn)行消息傳輸?shù)年?duì)列。

消息中間件 :簡(jiǎn)單的說(shuō)就是用來(lái)傳輸消息的中間載體,就是將你的信息發(fā)送到接受方,它并不關(guān)心發(fā)送的數(shù)據(jù)是什么。RabbitMQ就是一個(gè)消息中間件。

RabbitMQ的特點(diǎn)

  • 可靠性。支持持久化,傳輸確認(rèn),發(fā)布確認(rèn)等保證了MQ的可靠性。
  • 靈活的分發(fā)消息策略。這應(yīng)該是RabbitMQ的一大特點(diǎn)。在消息進(jìn)入MQ前由Exchange(交換機(jī))進(jìn)行路由消息。分發(fā)消息策略有:簡(jiǎn)單模式、工作隊(duì)列模式、發(fā)布訂閱模式、路由模式、通配符模式。
  • 支持集群。多臺(tái)RabbitMQ服務(wù)器可以組成一個(gè)集群,形成一個(gè)邏輯Broker。
  • 多種協(xié)議。RabbitMQ支持多種消息隊(duì)列協(xié)議,比如 STOMP、MQTT 等等。
  • 支持多種語(yǔ)言客戶(hù)端。RabbitMQ幾乎支持所有常用編程語(yǔ)言,包括 Java、.NET、Ruby 等等。
  • 可視化管理界面。RabbitMQ提供了一個(gè)易用的用戶(hù)界面,使得用戶(hù)可以監(jiān)控和管理消息 Broker。
  • 插件機(jī)制。RabbitMQ提供了許多插件,可以通過(guò)插件進(jìn)行擴(kuò)展,也可以編寫(xiě)自己的插件。

為什么使用消息隊(duì)列

  1. 解耦 ,模塊間的通信使用消息隊(duì)列進(jìn)行,降低模塊之間的耦合度。
  2. 異步 ,模塊A處理完核心業(yè)務(wù)之后,發(fā)消息給模塊B,就可以直接返回給客戶(hù)端,提高性能。
  3. 削峰 ,短時(shí)間內(nèi)有大量請(qǐng)求,可以通過(guò)消息隊(duì)列來(lái)逐個(gè)處理,防止系統(tǒng)宕機(jī)。

Hello World

首先,安裝RabbitMQ,可直接使用docker安裝一個(gè)。

docker 地址:https://hub.docker.com/_/rabbitmq/tags

# 拉取鏡像
docker pull rabbitmq:management

# 啟動(dòng)容器
docker run -id --hostname my-rabbit 
 --name rabbitmq 
 -p 15672:15672 
 -p 5672:5672 
 -e RABBITMQ_DEFAULT_USER=admin 
 -e RABBITMQ_DEFAULT_PASS=admin 
 rabbitmq:management

然后在網(wǎng)頁(yè)訪問(wèn):http://服務(wù)器的ip:15672,輸入賬號(hào)密碼。記得開(kāi)放端口

看到此頁(yè)面代表安裝成功

圖片

準(zhǔn)備就緒,先寫(xiě)個(gè)Hello World

  1. 導(dǎo)入pom依賴(lài)
    < dependency >
         < groupId >org.springframework.boot< /groupId >
         < artifactId >spring-boot-starter-amqp< /artifactId >
    < /dependency >
    
  2. 準(zhǔn)備工具類(lèi)
    public class ConnectionUtils {
    
        public static Connection getConnection() {
            ConnectionFactory factory = new ConnectionFactory();
            factory.setHost("1.15.88.28");
            factory.setPort(5672);
            factory.setUsername("admin");
            factory.setPassword("admin");
            factory.setVirtualHost("/");
            try {
                return factory.newConnection();
            } catch (IOException | TimeoutException e) {
                e.printStackTrace();
            }
            return null;
        }
    }
    
  3. 生產(chǎn)者
    public class Producer {
        // 聲明隊(duì)列的名字
        private static final String QUEUE_NAME = "queue_helloworld_1";
    
        public static void main(String[] args) throws IOException, TimeoutException {
            // 1. 獲取連接
            Connection connection = ConnectionUtils.getConnection();
            // 2. 創(chuàng)建數(shù)據(jù)傳輸通道
            Channel channel = connection.createChannel();
            // 3. 聲明隊(duì)列
            channel.queueDeclare(QUEUE_NAME, false, false, false, null);
            // 4. 發(fā)送數(shù)據(jù)到隊(duì)列
            channel.basicPublish("", QUEUE_NAME, MessageProperties.PERSISTENT_TEXT_PLAIN, "第一個(gè)隊(duì)列消息...".getBytes());
            // 5. 關(guān)閉通道
            channel.close();
            // 6. 關(guān)閉連接
            connection.close();
        }
    }
    
  4. 消費(fèi)者
    public class Consumer {
        // 聲明隊(duì)列的名字
        private static final String QUEUE_NAME = "queue_helloworld_1";
    
        public static void main(String[] args) throws IOException, TimeoutException {
            // 1. 獲取連接
            Connection connection = ConnectionUtils.getConnection();
            // 2. 創(chuàng)建通道
            Channel channel = connection.createChannel();
            // 3. 聲明隊(duì)列
            channel.queueDeclare(QUEUE_NAME, false, false, false, null);
            // 4. 聲明消費(fèi)者
            DefaultConsumer defaultConsumer = new DefaultConsumer(channel) {
                @Override
                public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
                    System.out.println("接收到的消息是:" + new String(body));
                    channel.basicAck(envelope.getDeliveryTag(), false);
                }
            };
            // 5. 綁定消費(fèi)者
            channel.basicConsume(QUEUE_NAME, false, defaultConsumer);
        }
    }
    
  5. 測(cè)試
    1. 先啟動(dòng)消費(fèi)者
    2. 再啟動(dòng)生產(chǎn)者
    3. 可以看到消費(fèi)者的控制臺(tái)打印出 生產(chǎn)者傳遞的消息
      圖片

小結(jié)

本文到這里就結(jié)束了,簡(jiǎn)單介紹了一下RabbitMQ是什么,以及RabbitMQ的安裝;

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 模塊
    +關(guān)注

    關(guān)注

    7

    文章

    2837

    瀏覽量

    53293
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    14

    文章

    10253

    瀏覽量

    91495
  • 交換機(jī)
    +關(guān)注

    關(guān)注

    23

    文章

    2904

    瀏覽量

    104470
  • 端口
    +關(guān)注

    關(guān)注

    4

    文章

    1104

    瀏覽量

    33966
  • rabbitmq
    +關(guān)注

    關(guān)注

    0

    文章

    20

    瀏覽量

    1280
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    RabbitMQ中的發(fā)布訂閱模型

    上一篇文章中,簡(jiǎn)單的介紹了一下RabbitMQ的work模型。這篇文章來(lái)學(xué)習(xí)一下RabbitMQ中的發(fā)布訂閱模型。 發(fā)布訂閱模型(Publish/Subscribe):簡(jiǎn)單的說(shuō)就是隊(duì)列里面的消息會(huì)被
    的頭像 發(fā)表于 09-25 14:30 ?1337次閱讀
    <b class='flag-5'>RabbitMQ</b>中的發(fā)布訂閱模型

    RabbitMq入門(mén)教程

    RabbitMQ是一個(gè)開(kāi)源的,在AMQP基礎(chǔ)上完整的,可復(fù)用的企業(yè)消息系統(tǒng)。
    的頭像 發(fā)表于 12-04 11:10 ?1402次閱讀
    <b class='flag-5'>RabbitMq</b>入門(mén)教程

    基于Docker Compose部署RabbitMQ的經(jīng)驗(yàn)分享

    RabbitMQ 是一個(gè)功能強(qiáng)大的開(kāi)源消息隊(duì)列系統(tǒng),它實(shí)現(xiàn)了高效的消息通信和異步處理。
    的頭像 發(fā)表于 01-03 10:22 ?3135次閱讀
    基于Docker Compose部署<b class='flag-5'>RabbitMQ</b>的經(jīng)驗(yàn)分享

    Rabbitmq與esp-open-rtos集成失敗了怎么解決?

    我嘗試將 Rabbitmq 與 esp-open-rtos 集成,但失敗了。 誰(shuí)能幫忙?
    發(fā)表于 05-10 11:45

    RabbitMQ-CN RabbitMQ中文文檔

    RabbitMQ_into_Chinese.zip
    發(fā)表于 04-19 10:51 ?0次下載
    <b class='flag-5'>RabbitMQ</b>-CN <b class='flag-5'>RabbitMQ</b>中文文檔

    什么情況下使用RabbitMQ或 Kafka

    如果你問(wèn)自己是否Apache Kafka比RabbitMQ更好或RabbitMQ是否比Apache Kafka更可靠,我想在這里阻止你。本文將從更廣泛的角度討論這兩種情況。它關(guān)注的是這兩個(gè)系統(tǒng)提供的功能,并將指導(dǎo)您做出正確的決定,決定何時(shí)使用哪個(gè)系統(tǒng)。
    的頭像 發(fā)表于 02-22 10:35 ?1035次閱讀
    什么情況下使用<b class='flag-5'>RabbitMQ</b>或 Kafka

    什么情況下使用RabbitMQ或 Kafka

    如果你問(wèn)自己是否Apache Kafka比RabbitMQ更好或RabbitMQ是否比Apache Kafka更可靠,我想在這里阻止你。本文將從更廣泛的角度討論這兩種情況。它關(guān)注的是這兩個(gè)系統(tǒng)提供的功能,并將指導(dǎo)您做出正確的決定,決定何時(shí)使用哪個(gè)系統(tǒng)。
    的頭像 發(fā)表于 02-24 11:12 ?1176次閱讀
    什么情況下使用<b class='flag-5'>RabbitMQ</b>或 Kafka

    RabbitMQ:消息傳遞的中介

    電子發(fā)燒友網(wǎng)站提供《RabbitMQ:消息傳遞的中介.zip》資料免費(fèi)下載
    發(fā)表于 06-14 16:08 ?0次下載
    <b class='flag-5'>RabbitMQ</b>:消息傳遞的中介

    rabbitmq是什么?rabbitmq安裝、原理、部署

    rabbitmq是什么? MQ的全稱(chēng)是Messagee Queue,因?yàn)橄⒌年?duì)列是隊(duì)列,所以遵循FIFO 先進(jìn)先出的原則是上下游傳遞信息的跨過(guò)程通信機(jī)制。 RabbitMQ是一套開(kāi)源(MPL
    的頭像 發(fā)表于 07-19 13:50 ?1675次閱讀

    RocketMQ和RabbitMQ的區(qū)別

    RocketMQ和RabbitMQ的區(qū)別: 架構(gòu)設(shè)計(jì):RocketMQ是基于主題(Topic)的發(fā)布/訂閱模式,而RabbitMQ則是基于隊(duì)列(Queue)的消息代理系統(tǒng)。 語(yǔ)言支持
    的頭像 發(fā)表于 07-24 13:39 ?1.5w次閱讀

    RabbitMQ中的路由模型(direct)

    路由模型 RabbitMQ 提供了五種不同的通信模型,上一篇文章中,簡(jiǎn)單的介紹了一下RabbitMQ的發(fā)布訂閱模型模型。這篇文章來(lái)學(xué)習(xí)一下RabbitMQ中的路由模型(direct)。 路由模型
    的頭像 發(fā)表于 09-25 11:32 ?1126次閱讀

    redis和rabbitMQ的區(qū)別

    Redis和RabbitMQ是兩個(gè)流行的開(kāi)源消息傳遞技術(shù),用于構(gòu)建高可靠、可擴(kuò)展和可擴(kuò)展的應(yīng)用程序。雖然它們都用于實(shí)現(xiàn)消息傳遞機(jī)制,但它們?cè)谠O(shè)計(jì)和運(yùn)作方式上存在一些不同之處。在本文中,我們將詳細(xì)討論
    的頭像 發(fā)表于 12-04 14:48 ?2666次閱讀

    rabbitmq高可用集群搭建

    在進(jìn)行RabbitMQ搭建時(shí),我們基于現(xiàn)有的連接數(shù)據(jù)和業(yè)務(wù)需求進(jìn)行了深入分析。目前的統(tǒng)計(jì)數(shù)據(jù)顯示,連接數(shù)為631,隊(duì)列數(shù)為80418。為了確保業(yè)務(wù)需求的順利滿(mǎn)足,我們需要在云產(chǎn)品和自建RabbitMQ消息隊(duì)列服務(wù)之間做出選擇。
    的頭像 發(fā)表于 03-12 14:29 ?1087次閱讀
    <b class='flag-5'>rabbitmq</b>高可用集群搭建

    RabbitMQ消息隊(duì)列解決方案

    在現(xiàn)代分布式系統(tǒng)架構(gòu)中,消息隊(duì)列作為核心組件,承擔(dān)著系統(tǒng)解耦、異步處理、流量削峰等重要職責(zé)。RabbitMQ作為一款成熟的消息隊(duì)列中間件,以其高可用性、高可靠性和豐富的特性,成為眾多企業(yè)的首選方案。本文將從運(yùn)維工程師的角度,詳細(xì)闡述RabbitMQ從單機(jī)部署到集群搭建的完
    的頭像 發(fā)表于 07-08 15:55 ?633次閱讀

    深入剖析RabbitMQ高可用架構(gòu)設(shè)計(jì)

    在微服務(wù)架構(gòu)中,消息隊(duì)列故障導(dǎo)致的系統(tǒng)不可用率高達(dá)27%!如何構(gòu)建一個(gè)真正可靠的消息中間件架構(gòu)?本文將深入剖析RabbitMQ高可用設(shè)計(jì)的核心要點(diǎn)。
    的頭像 發(fā)表于 08-18 11:19 ?958次閱讀