RabbitMQ的安裝以及使用(Windows環境)

1、RabbitMQ介紹

一、RabbitMQ簡介

RabbitMQ是實現了高級消息隊列協議(AMQP)的開源消息代理軟件(亦稱面向消息的中間件)。RabbitMQ服務器是用Erlang語言編寫的,而集羣和故障轉移是構建在開放電信平臺框架上的。全部主要的編程語言均有與代理接口通信的客戶端庫。html

二、RabbitMQ簡介(白話)

上述簡介摘自百度百科,相關術語自行百度吧。。。反正我也看不懂,太深奧。
作個比喻:
快遞員A須要將一個快遞給客戶B。
本來:A親手將快遞交給B。
問題:B如今有不少事要作,A只能等着B處理完事情,才能把快遞交給他,A就很難受了,送不了幾個快遞,無法賺錢了。
解決:設置一個快遞櫃,A把快遞放進快遞櫃,就能夠送下一個快遞了,B啥時候有空了,去快遞櫃拿就好了。
總結:快遞就是消息,快遞櫃就是消息隊列。快遞櫃有不少種,菜鳥,豐巢等,RabbitMQ就是其中一種快遞櫃
放在程序裏舉例:
客戶提交訂單,支付系統——>訂單系統,支付系統可能很快就執行完了,可是訂單系統要好久才能執行完,每次支付系統都要等待訂單系統,服務端速度就會很慢,如今使用RabbitMQ,支付系統支付成功後,發送一個支付成功消息到RabbitMQ,就能夠返回前端了,訂單系統在獲取到消息後,慢慢再執行訂單修改的程序。(固然,要考慮到某個系統出了異常怎麼辦,這個入門先無論,只管正常狀況。)前端

2、RabbitMQ的安裝

一、Erlang的安裝

由於RabbitMQ是用Erlang語言編寫的,因此要安裝RabbitMQ先要安裝Erlang。
下載地址: http://www.erlang.org/downloads
根據須要選擇版本
選擇 Windows 64-bit版,下載完成後直接安裝,一直NEXT。(路徑自行選擇)(官網下載速度會比較慢)
java

 

 

二、RabbitMQ安裝程序

注意:請確認計算機名爲英文,中文可能會致使RabbitMQ啓動失敗。若是啓動失敗,請改爲英文後,卸載並從新安裝spring

 

 

 

下載地址: http://www.rabbitmq.com/install-windows.html
根據須要選擇版本(注意:RabbitMQ和Erlang版本可能存在不匹配狀況)
選擇Bintray版本,下載完成後直接安裝,一直NEXT。(路徑自行選擇)

 

 

三、自定義環境變量

(1)erl環境變量配置

 

 

ERLANG_HOME=D:\Program\erl9.2

在Path中加入編程

%ERLANG_HOME%\bin;

(2)RabbitMQ環境變量配置

這裏注意,看好你RabbitMQ的安裝位置,以及安裝的版本,個人版本爲3.7.3windows

 

 

 

RABBITMQ_SERVER=C:\Program Files\RabbitMQ Server\rabbitmq_server-3.7.3

在Path中加入服務器

%RABBITMQ_SERVER%\sbin;

四、激活rabbitmq_management

在CMD中進入如下目錄,鍵入以下命令,不出錯便可框架

 

 

 

rabbitmq-plugins.bat enable rabbitmq_management

五、啓動RabbitMQ服務

須要以管理員方式啓動CMDsocket

 

 在命令行界面鍵入以下命令maven

net start RabbitMQ

由於RabbitMQ默認啓動的,當鍵入啓動命令時,會出現以下狀況,直接關閉RabbitMQ服務,再啓動就行。

 

 

 關閉RabbitMQ服務命令以下:

net stop RabbitMQ

3、RabbitMQ測試

測試地址 http://localhost:15672/
默認的用戶名:guest
默認的密碼爲:guest

4、Java客戶端測試(maven)

一、maven項目中添加RabbitMQ依賴

直接在項目的pom.xml文件中添加以下依賴

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
        </dependency>

二、新建SendMQ類,發送端

import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; import com.rabbitmq.client.ConnectionFactory; import java.io.IOException; public class SendMQ { private final static String QUEUE_NAME = "Hello"; public static void main(String[] args) throws IOException, Exception { // connection是socket鏈接的抽象,而且爲咱們管理協議版本協商(protocol version negotiation), // 認證(authentication )等等事情。這裏咱們要鏈接的消息代理在本地,所以咱們將host設爲「localhost」。 // 若是咱們想鏈接其餘機器上的代理,只須要將這裏改成特定的主機名或IP地址。
        ConnectionFactory factory = new ConnectionFactory(); factory.setHost("localhost"); factory.setPort(5672); //默認端口號
        factory.setUsername("guest");//默認用戶名
        factory.setPassword("guest");//默認密碼
        Connection connection = factory.newConnection(); Channel channel = connection.createChannel(); // 接下來,咱們建立一個channel,絕大部分API方法須要經過調用它來完成。 // 發送以前,咱們必須聲明消息要發往哪一個隊列,而後咱們能夠向隊列發一條消息:
        channel.queueDeclare(QUEUE_NAME, false, false, false, null); String message = "Hello world"; channel.basicPublish("", QUEUE_NAME, null, message.getBytes()); System.out.println(" [x] Sent '" + message + "'"); channel.close(); connection.close(); } }

三、新建RecvMQ類,接收端

import com.rabbitmq.client.*; import java.io.IOException; public class RecvMQ { private final static String QUEUE_NAME = "Hello"; public static void main(String[] args) throws IOException, Exception { ConnectionFactory factory = new ConnectionFactory(); factory.setHost("localhost"); factory.setPort(5672); factory.setUsername("guest"); factory.setPassword("guest"); Connection connection = factory.newConnection(); Channel channel = connection.createChannel(); channel.queueDeclare(QUEUE_NAME, false, false, false, null); System.out.println(" [*] Waiting for messages. To exit press CTRL+C"); Consumer consumer = new DefaultConsumer(channel) { @Override public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException { String message = new String(body, "UTF-8"); System.out.println(" [x] Received '" + message + "'"); } }; channel.basicConsume(QUEUE_NAME, true, consumer); } }

四、運行兩個類測試

相關文章
相關標籤/搜索