1. 程式人生 > >消息隊列 RabbitMQ 準入門系列 (一)Hello, world! 消息發送

消息隊列 RabbitMQ 準入門系列 (一)Hello, world! 消息發送

功能 src 有關 不存在 ide 依賴 生產者 消息 依然

快問快答:

1. 什麽是RabbitMQ?

message broker,消息發送的中介,提供的是消息送達的配套服務。

在郵局送信的類比例子中,RabbitMQ的角色是郵筒、郵遞員、郵局幾種功能的綜合。

2. 基本術語

Producer,消息生產者

Consumer,消息消費者(或接收者)

Queue,RabbitMQ用來暫存消息的地方

從Hello,world!開始

目標:

1)建立發送者應用,發送一個消息到RabbitMQ:Hello, world!

2)建立一個接受者,從RabbitMQ順利收到該消息;

HOW TO:

1)安裝RabbitMQ服務

每個人的操作環境不同,有人使用Windows本地環境,有人使用MAC本地環境(本文),有人使用雲平臺,這裏不細數如何安裝啟動RabbitMQ服務。

技術分享圖片

2)建立RabbitMQ的消息生產者應用(Java)

2.1)初始化

本文使用Idea IDE,直接建立一個簡單Java Hello world應用即可

技術分享圖片

初始項目結構如圖:

技術分享圖片

2.2)引入RabbitMQ Java支持庫

需要引入RabbitMQ的Java客戶端庫,以及依賴的相關類庫,如下圖所示:

技術分享圖片

Idea引入三個類庫後的項目結構:

技術分享圖片

2.3)開始構建生產者

2.3.1)定義暫存消息的隊列 Queue 名字

技術分享圖片

2.3.2)要發送消息,首先要和RabbitMQ服務聯系上:

技術分享圖片

圖中1,就是指定一下RabbitMQ的地址信息,即RabbitMQ服務的IP和端口信息,RabbitMQ服務的默認端口號應該是 5672

圖中2,建立一個新的TCP連接到RabbitMQ 服務器

2.3.3)建立通信 Channel,發送消息

技術分享圖片

Channel的概念,後續再來講解,此刻可以想象理解為通信的管道即可。

在發送消息之前,有一件事要明確,RabbitMQ是否已經有了消息存在哪裏的信息,Queue!

queueDeclare 告訴RabbitMQ,channel綁定到一個名為 MY_QUEUE_NAME 對應的字符串 的隊列(如果不存在,RabbitMQ會創建的)

發送消息

技術分享圖片

運行

技術分享圖片

從程序上看,所有API調用都成功了。有沒有辦法知道消息是不是真的發送成功了?

1)rabbitmqctl list_queues

命令可以查看所有的queue信息,後面這個1應該猜到了,就是當前 hello 這個queue的暫存消息數量(未消費的)

技術分享圖片

2)http://localhost:15672/#/

RabbitMQ提供了Web 管理界面,可以查看RabbitMQ的很多信息

技術分享圖片

以上的程序有個問題:

運行之後,有沒有發現程序並沒有結束?從操作臺看到RabbitMQ的連接依然存在?

程序沒有關閉channel 和 connection!

技術分享圖片

當然,有更好的寫法:

技術分享圖片

這樣就無須自己手動編碼去關閉 channel 和 connection 拉。

消息隊列 RabbitMQ 準入門系列 (一)Hello, world! 消息發送