在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

    文章

    2785

    瀏覽量

    50026
  • 服務器
    +關注

    關注

    13

    文章

    9753

    瀏覽量

    87581
  • 交換機
    +關注

    關注

    22

    文章

    2731

    瀏覽量

    101656
  • 端口
    +關注

    關注

    4

    文章

    1046

    瀏覽量

    32833
  • rabbitmq
    +關注

    關注

    0

    文章

    19

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    RabbitMQ中的發布訂閱模型

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

    RabbitMq入門教程

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

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

    RabbitMQ 是一個功能強大的開源消息隊列系統,它實現了高效的消息通信和異步處理。
    的頭像 發表于 01-03 10:22 ?2503次閱讀
    基于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 ?746次閱讀
    什么情況下使用<b class='flag-5'>RabbitMQ</b>或 Kafka

    什么情況下使用RabbitMQ或 Kafka

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

    RocketMQ和RabbitMQ的區別

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

    RabbitMQ中的路由模型(direct)

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

    redis和rabbitMQ的區別

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

    rabbitmq高可用集群搭建

    在進行RabbitMQ搭建時,我們基于現有的連接數據和業務需求進行了深入分析。目前的統計數據顯示,連接數為631,隊列數為80418。為了確保業務需求的順利滿足,我們需要在云產品和自建RabbitMQ消息隊列服務之間做出選擇。
    的頭像 發表于 03-12 14:29 ?460次閱讀
    <b class='flag-5'>rabbitmq</b>高可用集群搭建
    主站蜘蛛池模板: 一级毛片无毒不卡直接观看 | 视频一区二区在线观看 | 午夜一级精品免费毛片 | 中文字幕在线观看一区 | 久久99精品国产麻豆宅宅 | 日本黄色片www | 亚洲97在线 | 性猛交╳xxx乱大交 性免费视频 | 日本黄色网址免费 | 手机看片福利视频 | 日本视频免费高清一本18 | 国产情侣真实露脸在线最新 | 月夜免费观看高清在线完整 | 伊人精品视频在线 | 5月丁香婷婷 | 国产主播在线播放 | 2017天天干 | 米奇影院777 | 4虎影院在线观看 | 一级特黄特色的免费大片视频 | 1024你懂的日韩 | 欧美精品国产第一区二区 | 国产成人精品系列在线观看 | 国产香蕉精品视频在 | 夜夜骚视频| 亚洲光棍天堂 | 激情五月网站 | 欧美日韩生活片 | 你懂的在线观看网址 | 免费一级毛片正在播放 | 亚洲色图综合图区 | 伊人久久大香线蕉综合7 | 欧美xxxx做受欧美88bbw | 亚洲第一视频在线 | 天堂网视频在线 | 亚洲免费观看视频 | 久久婷婷色一区二区三区 | 一级黄色免费毛片 | 精品欧美激情在线看 | 免费国产成高清人在线视频 | 亚洲电影一区二区 |