色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

RabbitMQ是什么

科技綠洲 ? 來源:Java技術指北 ? 作者:Java技術指北 ? 2023-09-25 14:36 ? 次閱讀

在工作中經常會用到消息隊列處理各種問題,今天指北君帶領大家來學一個很常用到的技術-RabbitMQ;接下來還會有關于RabbitMQ的系列教程,對你有幫助的話記得關注哦~

RabbitMQ是什么

隊列 :一種數據結構,先進先出。

消息隊列 :簡單的說就是用來進行消息傳輸的隊列。

消息中間件 :簡單的說就是用來傳輸消息的中間載體,就是將你的信息發送到接受方,它并不關心發送的數據是什么。RabbitMQ就是一個消息中間件。

RabbitMQ的特點

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

為什么使用消息隊列

  1. 解耦 ,模塊間的通信使用消息隊列進行,降低模塊之間的耦合度。
  2. 異步 ,模塊A處理完核心業務之后,發消息給模塊B,就可以直接返回給客戶端,提高性能。
  3. 削峰 ,短時間內有大量請求,可以通過消息隊列來逐個處理,防止系統宕機。

Hello World

首先,安裝RabbitMQ,可直接使用docker安裝一個。

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

# 拉取鏡像
docker pull rabbitmq:management

# 啟動容器
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

然后在網頁訪問:http://服務器的ip:15672,輸入賬號密碼。記得開放端口

看到此頁面代表安裝成功

圖片

準備就緒,先寫個Hello World

  1. 導入pom依賴
    < dependency >
         < groupId >org.springframework.boot< /groupId >
         < artifactId >spring-boot-starter-amqp< /artifactId >
    < /dependency >
    
  2. 準備工具類
    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. 生產者
    public class Producer {
        // 聲明隊列的名字
        private static final String QUEUE_NAME = "queue_helloworld_1";
    
        public static void main(String[] args) throws IOException, TimeoutException {
            // 1. 獲取連接
            Connection connection = ConnectionUtils.getConnection();
            // 2. 創建數據傳輸通道
            Channel channel = connection.createChannel();
            // 3. 聲明隊列
            channel.queueDeclare(QUEUE_NAME, false, false, false, null);
            // 4. 發送數據到隊列
            channel.basicPublish("", QUEUE_NAME, MessageProperties.PERSISTENT_TEXT_PLAIN, "第一個隊列消息...".getBytes());
            // 5. 關閉通道
            channel.close();
            // 6. 關閉連接
            connection.close();
        }
    }
    
  4. 消費者
    public class Consumer {
        // 聲明隊列的名字
        private static final String QUEUE_NAME = "queue_helloworld_1";
    
        public static void main(String[] args) throws IOException, TimeoutException {
            // 1. 獲取連接
            Connection connection = ConnectionUtils.getConnection();
            // 2. 創建通道
            Channel channel = connection.createChannel();
            // 3. 聲明隊列
            channel.queueDeclare(QUEUE_NAME, false, false, false, null);
            // 4. 聲明消費者
            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. 綁定消費者
            channel.basicConsume(QUEUE_NAME, false, defaultConsumer);
        }
    }
    
  5. 測試
    1. 先啟動消費者
    2. 再啟動生產者
    3. 可以看到消費者的控制臺打印出 生產者傳遞的消息
      圖片

小結

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 模塊
    +關注

    關注

    7

    文章

    2750

    瀏覽量

    48184
  • 服務器
    +關注

    關注

    12

    文章

    9432

    瀏覽量

    86506
  • 交換機
    +關注

    關注

    21

    文章

    2668

    瀏覽量

    100468
  • 端口
    +關注

    關注

    4

    文章

    993

    瀏覽量

    32393
  • rabbitmq
    +關注

    關注

    0

    文章

    19

    瀏覽量

    1069
收藏 人收藏

    評論

    相關推薦

    RabbitMQ中的發布訂閱模型

    上一篇文章中,簡單的介紹了一下RabbitMQ的work模型。這篇文章來學習一下RabbitMQ中的發布訂閱模型。 發布訂閱模型(Publish/Subscribe):簡單的說就是隊列里面的消息會被
    的頭像 發表于 09-25 14:30 ?626次閱讀
    <b class='flag-5'>RabbitMQ</b>中的發布訂閱模型

    RabbitMq入門教程

    RabbitMQ是一個開源的,在AMQP基礎上完整的,可復用的企業消息系統。
    的頭像 發表于 12-04 11:10 ?596次閱讀
    <b class='flag-5'>RabbitMq</b>入門教程

    基于Docker Compose部署RabbitMQ的經驗分享

    RabbitMQ 是一個功能強大的開源消息隊列系統,它實現了高效的消息通信和異步處理。
    的頭像 發表于 01-03 10:22 ?2183次閱讀
    基于Docker Compose部署<b class='flag-5'>RabbitMQ</b>的經驗分享

    請問有STM32F4上應用RabbitMQ或MQTT的例子嗎?

    ,是需要跑FreeRTOS 或 uCOS 么? 還是裸跑也沒有問題的?3、有沒有前輩能提供一下應用MOTT在STM32上的例子;另外,如果我想要用RabbitMQ呢?有沒有參考的例子?
    發表于 04-03 04:35

    【飛凌嵌入式 RK3399 開發板性能試用體驗】(安裝RabbitMQ消息隊列服務)

    說明relang安裝成功安裝RabbitMQServer消息隊列服務apt-get install rabbitmq-server #安裝成功自動啟動查看RabbitMQServer安裝狀態
    發表于 10-28 17:03

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

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

    RabbitMQ-CN RabbitMQ中文文檔

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

    什么情況下使用RabbitMQ或 Kafka

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

    什么情況下使用RabbitMQ或 Kafka

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

    RabbitMQ:消息傳遞的中介

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

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

    rabbitmq是什么? MQ的全稱是Messagee Queue,因為消息的隊列是隊列,所以遵循FIFO 先進先出的原則是上下游傳遞信息的跨過程通信機制。 RabbitMQ是一套開源(MPL
    的頭像 發表于 07-19 13:50 ?1125次閱讀

    RocketMQ和RabbitMQ的區別

    RocketMQ和RabbitMQ的區別: 架構設計:RocketMQ是基于主題(Topic)的發布/訂閱模式,而RabbitMQ則是基于隊列(Queue)的消息代理系統。 語言支持
    的頭像 發表于 07-24 13:39 ?1.4w次閱讀

    RabbitMQ中的路由模型(direct)

    路由模型 RabbitMQ 提供了五種不同的通信模型,上一篇文章中,簡單的介紹了一下RabbitMQ的發布訂閱模型模型。這篇文章來學習一下RabbitMQ中的路由模型(direct)。 路由模型
    的頭像 發表于 09-25 11:32 ?587次閱讀

    redis和rabbitMQ的區別

    Redis和RabbitMQ是兩個流行的開源消息傳遞技術,用于構建高可靠、可擴展和可擴展的應用程序。雖然它們都用于實現消息傳遞機制,但它們在設計和運作方式上存在一些不同之處。在本文中,我們將詳細討論
    的頭像 發表于 12-04 14:48 ?1702次閱讀

    rabbitmq高可用集群搭建

    在進行RabbitMQ搭建時,我們基于現有的連接數據和業務需求進行了深入分析。目前的統計數據顯示,連接數為631,隊列數為80418。為了確保業務需求的順利滿足,我們需要在云產品和自建RabbitMQ消息隊列服務之間做出選擇。
    的頭像 發表于 03-12 14:29 ?81次閱讀
    <b class='flag-5'>rabbitmq</b>高可用集群搭建
    主站蜘蛛池模板: 偷柏自拍亚洲综合在线 | 嗯好舒服嗯好大好猛好爽 | 伦理片在线线手机版韩国免费观看 | 青娱乐极品视觉盛宴国产视频 | 国产亚洲视频在线 | 久久久久久久99精品免费观看 | 无码天堂亚洲国产AV久久 | 高清毛片一区二区三区 | 欧美黄色第一页 | 性奴公司 警花 | 在线免费观看毛片网站 | 啊轻点灬大JI巴又大又粗 | bt成人社区 | 天天影视香色欲综合网 | 国产亚洲精品欧洲在线视频 | 强壮的公次次弄得我高潮韩国电影 | 吃胸亲吻吃奶摸下面免费视频 | 自慰弄湿白丝袜 | 18禁黄久久久AAA片 | 97在线观看免费视频 | 全肉高H短篇合集 | 99久酒店在线精品2019 | 爱豆剧果冻传媒在线播放 | 被男按摩师添的好爽在线直播 | 高清国语自产拍免费 | 中文日产无乱码AV在线观 | 精品无人区麻豆乱码无限制 | 同时和两老师双飞 | 暖暖日本 在线 高清 | 婷婷亚洲五月色综合久久 | 国产成人免费 | 99久久国产免费福利 | 影888午夜理论不卡 樱桃熟了A级毛片 | 亚洲AV无码乱码国产麻豆P | 欧美亚洲视频在线二区 | 亚洲网站视频在线观看 | 欧美日韩精品不卡在线观看 | VIDEOSGGRATIS欧美另类 | RUNAWAY韩国动漫免费网 | 伸到同桌奶罩里捏她胸h | 中国老太婆xxxxx |