操作002:HelloWorld

文章目錄

  • 操作002:HelloWorld
  • 一、目標
  • 二、具體操作
    • 1、創建Java工程
      • ①消息發送端(生產者)
      • ②消息接收端(消費者)
      • ③添加依賴
    • 2、發送消息
      • ①Java代碼
      • ②查看效果
    • 3、接收消息
      • ①Java代碼
      • ②控制臺打印
      • ③查看后臺管理界面

操作002:HelloWorld

一、目標

生產者發送消息,消費者接收消息,用最簡單的方式實現

官網說明參見下面超鏈接:

RabbitMQ tutorial - “Hello World!” — RabbitMQ

在這里插入圖片描述

二、具體操作

1、創建Java工程

①消息發送端(生產者)

在這里插入圖片描述


②消息接收端(消費者)

在這里插入圖片描述


③添加依賴

<dependencies><dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><version>5.20.0</version></dependency>
</dependencies>

2、發送消息

①Java代碼

不用客氣,整個代碼全部復制——當然,連接信息改成你自己的:

package com.atguigu.rabbitmq.simple;  import com.rabbitmq.client.Channel;  
import com.rabbitmq.client.Connection;  
import com.rabbitmq.client.ConnectionFactory;  public class Producer {  public static void main(String[] args) throws Exception {  // 創建連接工廠  ConnectionFactory connectionFactory = new ConnectionFactory();  // 設置主機地址  connectionFactory.setHost("192.168.200.100");  // 設置連接端口號:默認為 5672connectionFactory.setPort(5672);// 虛擬主機名稱:默認為 /connectionFactory.setVirtualHost("/");// 設置連接用戶名;默認為guest  connectionFactory.setUsername("guest");// 設置連接密碼;默認為guest  connectionFactory.setPassword("123456");// 創建連接  Connection connection = connectionFactory.newConnection();  // 創建頻道  Channel channel = connection.createChannel();  // 聲明(創建)隊列  // queue      參數1:隊列名稱  // durable    參數2:是否定義持久化隊列,當 MQ 重啟之后還在  // exclusive  參數3:是否獨占本次連接。若獨占,只能有一個消費者監聽這個隊列且 Connection 關閉時刪除這個隊列  // autoDelete 參數4:是否在不使用的時候自動刪除隊列,也就是在沒有Consumer時自動刪除  // arguments  參數5:隊列其它參數  channel.queueDeclare("simple_queue", true, false, false, null);  // 要發送的信息  String message = "你好;小兔子!";  // 參數1:交換機名稱,如果沒有指定則使用默認Default Exchange  // 參數2:路由key,簡單模式可以傳遞隊列名稱  // 參數3:配置信息  // 參數4:消息內容  channel.basicPublish("", "simple_queue", null, message.getBytes());  System.out.println("已發送消息:" + message);  // 關閉資源  channel.close();  connection.close();  }  }

②查看效果

在這里插入圖片描述
在這里插入圖片描述

3、接收消息

①Java代碼

不用客氣,整個代碼全部復制——當然,連接信息改成你自己的:

package com.atguigu.rabbitmq.simple;  import com.rabbitmq.client.*;  import java.io.IOException;  public class Consumer {  public static void main(String[] args) throws Exception {  // 1.創建連接工廠  ConnectionFactory factory = new ConnectionFactory();  // 2. 設置參數  factory.setHost("192.168.200.100");  factory.setPort(5672);  factory.setVirtualHost("/");  factory.setUsername("guest");factory.setPassword("123456");  // 3. 創建連接 Connection        Connection connection = factory.newConnection();  // 4. 創建Channel  Channel channel = connection.createChannel();  // 5. 創建隊列  // 如果沒有一個名字叫simple_queue的隊列,則會創建該隊列,如果有則不會創建  // 參數1. queue:隊列名稱  // 參數2. durable:是否持久化。如果持久化,則當MQ重啟之后還在  // 參數3. exclusive:是否獨占。  // 參數4. autoDelete:是否自動刪除。當沒有Consumer時,自動刪除掉  // 參數5. arguments:其它參數。  channel.queueDeclare("simple_queue",true,false,false,null);  // 接收消息  DefaultConsumer consumer = new DefaultConsumer(channel){  // 回調方法,當收到消息后,會自動執行該方法  // 參數1. consumerTag:標識  // 參數2. envelope:獲取一些信息,交換機,路由key...  // 參數3. properties:配置信息  // 參數4. body:數據  @Override  public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {  System.out.println("consumerTag:"+consumerTag);  System.out.println("Exchange:"+envelope.getExchange());  System.out.println("RoutingKey:"+envelope.getRoutingKey());  System.out.println("properties:"+properties);  System.out.println("body:"+new String(body));  }  };  // 參數1. queue:隊列名稱  // 參數2. autoAck:是否自動確認,類似咱們發短信,發送成功會收到一個確認消息  // 參數3. callback:回調對象  // 消費者類似一個監聽程序,主要是用來監聽消息  channel.basicConsume("simple_queue",true,consumer);  }  }

②控制臺打印

consumerTag:amq.ctag-8EB87GaZFP52LKSMcj98UA
Exchange:
RoutingKey:simple_queue
properties:#contentHeader(content-type=null, content-encoding=null, headers=null, delivery-mode=null, priority=null, correlation-id=null, reply-to=null, expiration=null, message-id=null, timestamp=null, type=null, user-id=null, app-id=null, cluster-id=null)
body:你好;小兔子!

③查看后臺管理界面

因為消息被消費掉了,所以RabbitMQ服務器上沒有了:

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/64134.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/64134.shtml
英文地址,請注明出處:http://en.pswp.cn/web/64134.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

機器視覺檢測相機基礎知識 | 顏色 | 光源 | 鏡頭 | 分辨率 / 精度 / 公差

注&#xff1a;本文為 “keyence 視覺沙龍中機器視覺檢測基礎知識” 文章合輯。 機器視覺檢測基礎知識&#xff08;一&#xff09;顏色篇 視覺檢測硬件構成的基本部分包括&#xff1a;處理器、相機、鏡頭、光源。 其中&#xff0c;和光源相關的最重要的兩個參數就是光源顏色和…

【每日學點鴻蒙知識】壓力測試、Web組件攔截器、nfc開關狀態、定位能力、rn支持的三方庫

1、HarmonyOS的wukong 支持運行python腳本進行壓力或者常規測試嗎&#xff1f; Python腳本調用hdc命令&#xff0c;執行hdc shell wukong XXXwukong只支持穩定性壓測&#xff0c;普通測試建議使用arkxtest測試框架 2、Web組件頁面內跳轉時自定義WebHeader問題&#xff1f; 如…

GDPU Vue前端框架開發 期末賽道出勇士篇(更新ing)

記住&#xff0c;年底陪你跨年的不會僅是方便面跟你的閨蜜&#xff0c;還有孑的筆記。 選擇題 1.下列選項用于設置Vue.js頁面視圖的元素是&#xff08;&#xff09;。 A. Template B. script C. style D. title 2.下列選項中能夠定義Vuejs根實例對象的元素是&#xff08;&…

Flutter開發HarmonyOS 鴻蒙App的好處、能力以及把Flutter項目打包成鴻蒙應用

Flutter開發HarmonyOS的好處&#xff1a; Flutter是谷歌公司開發的一款開源、免費的UI框架&#xff0c;可以讓我們快速的在Android和iOS上構建高質量App。它最大的特點就是跨平臺、以及高性能。 目前 Flutter 已經支持 iOS、Android、Web、Windows、macOS、Linux 的跨平臺開發…

Effective C++ 條款 17:以獨立語句將 `newed` 對象置入智能指針

文章目錄 條款 17&#xff1a;以獨立語句將 newed 對象置入智能指針核心思想示例代碼錯誤用法分析推薦設計總結 條款 17&#xff1a;以獨立語句將 newed 對象置入智能指針 核心思想 問題背景 如果在將 newed 對象傳遞給智能指針時&#xff0c;包含了復雜的表達式&#xff0c;一…

【體驗官招募】SoFlu - JavaAI 開發助手:開啟智能開發新時代

你是否有過這樣的經歷&#xff1f;在深夜的辦公室里&#xff0c;面對緊急的 Java 項目&#xff0c;看著厚厚的需求文檔&#xff0c;你是否感到無從下手&#xff1f; 當你嘗試理解客戶那些復雜又模糊的需求時&#xff0c;是否會因為要和產品經理反復溝通確認每一個細節而感到厭…

【Compose multiplatform教程07】多平臺常用組件和重要組件目錄

一、基礎交互與顯示組件 Text 查看示例 功能說明&#xff1a;用于在界面上顯示文本內容&#xff0c;支持設置字體、大小、顏色、樣式&#xff08;如加粗、斜體、下劃線&#xff09;等屬性&#xff0c;滿足不同的文本展示需求&#xff0c;可傳達各種信息給用戶。示例場景&#…

自學記錄HarmonyOS Next DRM API 13:構建安全的數字內容保護系統

在完成了HarmonyOS Camera API的開發之后&#xff0c;我開始關注更復雜的系統級功能。在瀏覽HarmonyOS Next文檔時&#xff0c;我發現了一個非常有趣的領域&#xff1a;數字版權管理&#xff08;DRM&#xff09;。最新的DRM API 13提供了強大的工具&#xff0c;用于保護數字內容…

【HENU】河南大學計院2024 操作系統 簡答題復習

和光同塵_我的個人主頁 一直游到海水變藍。 單項選擇 15x2 30 判斷 10x1 10 簡答 3x10 30 綜合 3x10 30 簡答題 簡述操作系統的四個基本特征。 并發性 共享性 虛擬性 異步性 并發性是最重要特性&#xff0c;其它三種特性以此為前提。 并發 并發(Concurrence)&#…

基于Android的校園導航系統

基于Android的校園導航系統是一種專為校園環境設計的移動應用程序&#xff0c;旨在幫助學生、教職工及訪客快速、準確地找到校園內的目的地。以下是對基于Android的校園導航系統的詳細介紹&#xff1a; 一、系統概述 基于Android的校園導航系統通常包括客戶端&#xff08;移動…

GEE錯誤——PCA系數變換的時候出現的錯誤

目錄 錯誤提示1 錯誤提示2 原始的教程鏈接&#xff1a; 錯誤代碼 修正后的代碼 結果 錯誤提示1 這個是因為原始GEE教程中給的讓我們填入需要進行計算的波段名稱&#xff0c;而且是以list的形式傳入。 錯誤提示2 這里我們雖然傳入了正確的波段名稱&#xff0c;但是發現要…

C#代碼實現把中文錄音文件(.mp3 .wav)轉為文本文字內容

我們有一個中文錄音文件.mp3格式或者是.wav格式&#xff0c;如果我們想要提取錄音文件中的文字內容&#xff0c;我們可以采用以下方法&#xff0c;不需要使用Azure Speech API 密鑰注冊通過離線的方式實現。 1.首先我們先在NuGet中下載兩個包 NAudio 2.2.1、Whisper.net 1.7.3…

【py腳本+logstash+es實現自動化檢測工具】

概述 有時候&#xff0c;我們會遇到需要查看服務器的網絡連接或者內存或者其他指標是否有超時&#xff0c;但是每次需要登錄到服務器查看會很不方便,所以我們可以設置一個自動腳本化工具自動幫助我們查看&#xff0c;下面我做了一個demo在windows上面。 一、py腳本 import s…

計算機操作系統與安全復習筆記

1 緒論 操作系統目標: 方便性; 有效性; 可擴充性; 開放性. 作用: 用戶與計算機硬件系統之間的接口; 計算機資源的管理者; 實現了對計算機資源的抽象; 計算機工作流程的組織者. 多道程序設計: 內存中同時存放若干個作業, 使其共享系統資源且同時運行; 單處理機環境下宏觀上并行…

qt5.12.11+msvc編譯器編譯qoci驅動

1.之前編譯過minGW編譯器編譯qoci驅動,很順利就完成了,文章地址:minGW編譯qoci驅動詳解,今天按照之前的步驟使用msvc編譯器進行編譯,直接就報錯了: 查了些資料,發現兩個編譯器在編譯時,pro文件中引用的庫不一樣,下面是msvc編譯器引用的庫,其中編譯引用的庫我這里安裝…

Java爬蟲實戰:深度解析VIP商品詳情獲取技術

在數字化時代&#xff0c;數據的價值不言而喻。對于電商平臺而言&#xff0c;掌握VIP商品的詳細信息是提升服務質量、優化用戶體驗的關鍵。然而&#xff0c;這些信息往往被復雜的網頁結構和反爬蟲策略所保護。本文將帶你深入了解如何使用Java編寫爬蟲&#xff0c;以安全、高效地…

校史館云展廳適合遠程教學嗎?

隨著信息技術的飛速發展&#xff0c;遠程教學已經成為教育領域的一個重要趨勢。 校史館作為學校文化傳承的重要場所&#xff0c;承載著豐富的歷史信息和教育資源。 那么&#xff0c;將校史館搬到云端&#xff0c;構建云展廳&#xff0c;是否適合遠程教學呢&#xff1f; 下面…

一些elasticsearch重要概念與配置參數

ES 是在 lucene 的基礎上進行研發的&#xff0c;隱藏了 lucene 的復雜性&#xff0c;提供簡單易用的 RESTful Api接口。ES 的分片相當于 lucene 的索引。 Node 節點的幾種部署實例 實例一: 只用于數據存儲和數據查詢&#xff0c;降低其資源消耗率 node.master: false node.da…

交換機與路由器的區別

交換機和路由器是網絡中的兩種關鍵設備&#xff0c;它們各自承擔不同的功能&#xff0c;主要區別體現在以下幾個方面&#xff1a; 一、工作層次與功能 交換機&#xff1a; 工作層次&#xff1a;交換機主要工作在OSI模型的第二層&#xff0c;即數據鏈路層。 功能&#xff1a;交…

Go Energy 跨平臺框架 v2.5.1 發布

Energy 框架 是Go語言基于CEF 和 LCL 開發的跨平臺 GUI 框架, 具體豐富的系統原生 UI 控件集, 豐富的 CEF 功能 API&#xff0c;簡化且不失功能的 CEF 功能 API 使用。 特性&#xff1f; 特性描述跨平臺支持 Windows, macOS, Linux簡單Go語言的簡單特性&#xff0c;使用簡單…