【RabbitMQ】2.入門程式Hello world
在開始開發前,需要先安裝的RabbitMQ的所需的軟體及獲取的JAR包。
一中,Windows下的的RabbitMQ的安裝
下載二郎,地址:http://www.erlang.org/download/otp_win32_R15B.exe,雙擊安裝即可(首先裝)
下載RabbitMQ的,地址:http://www.rabbitmq.com/releases/rabbitmq-server/v3.3.4/rabbitmq-server-3.3.4.exe,雙擊安裝即可
下載兔client.jar中,Java的程式碼時需要匯入地址:HTTP://www.rabbitmq.com/releases/rabbitmq-java-client/v3.3.4/rabbitmq-java-client-bin-3.3.4.zip
安裝完成後,在RabbitMQ的的的安裝目錄的sbin目錄目錄先會有:RabbitMQ的的-server.bat
在cmd進入命令列介面後,切換到sbin目錄下,執行rabbitmq-server.bat start命令,啟動RabbitMQ服務。
2.入門程式開發
一個生產者傳送訊息,一個消費者接收訊息,並在控制檯打印出來。
步驟:
1)。新建一個的java的專案,匯入兔client.jar中中包
2)。新建一個生產者類傳送,連線到的RabbitMQ的服務,傳送一條資訊,然後退出。
a。通過連線工廠建立連線;建立連線傳入的引數就是RabbitMQ Server的ip或者名稱。
b通過連線連線建立通道(頻道)。
Ç通過通道指定佇列佇列,生產者和消費者都應該去建立。
d傳送訊息,此處使用預設的交換器的交流,其routing_key即為佇列名。
即關閉頻道,關閉連線。
package com.bj.rabbitmq.study; import java.io.IOException; import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; import com.rabbitmq.client.ConnectionFactory; public class Send { //佇列名稱 public final static String QUEUE_NAME = "hello"; public static void main(String[] args) throws IOException { //建立連線 連線到rabbitmq訊息佇列 ConnectionFactory cf = new ConnectionFactory(); //設定RabbitMQ所在主機ip或者主機名 cf.setHost("localhost"); //建立一個連線 Connection c = cf.newConnection(); //建立一個頻道 Channel ch = c.createChannel(); //指定一個佇列 ch.queueDeclare(QUEUE_NAME, false, false, false, null); String message = "hello rabbitmq"; //往佇列中釋出一條訊息 ch.basicPublish("", QUEUE_NAME, null, message.getBytes()); System.out.println("[send]:"+message); ch.close(); c.close(); } }
值得注意的是佇列只會在它不存在的時候建立,多次宣告並不會重複建立。資訊的內容是位元組陣列,也就意味著你可以傳遞任何資料。
3)。新建一個接收類的預留,不斷等待伺服器推送訊息,然後在控制檯輸出。
a。通過連線工廠建立連線;建立連線傳入的引數就是RabbitMQ Server的ip或者名稱。
b通過連線連線建立通道(頻道)。
Ç通過通道指定佇列佇列,生產者和消費者都應該去建立。
d繫結該佇列的消費者。
即無線迴圈監聽佇列佇列,當有訊息時,輸出。
package com.bj.rabbitmq.study;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.QueueingConsumer;
public class Recv {
//佇列名稱
private final static String QUEUE_NAME = "hello";
public static void main(String[] argv) throws java.io.IOException,
java.lang.InterruptedException
{
//開啟連線和建立頻道,與傳送端一樣
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
//宣告佇列,主要為了防止訊息接收者先執行此程式,佇列還不存在時建立佇列。
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
System.out.println(" [Waiting] 等待訊息。。。");
//建立佇列消費者
QueueingConsumer consumer = new QueueingConsumer(channel);
//指定消費佇列
channel.basicConsume(QUEUE_NAME, true, consumer);
while (true)
{
//nextDelivery是一個阻塞方法(內部實現其實是阻塞佇列的take方法)
QueueingConsumer.Delivery delivery = consumer.nextDelivery();
String message = new String(delivery.getBody());
System.out.println(" [Received]:" + message);
}
}
}
4)。分別執行Send.java和Recv.java順序無所謂。前提的RabbitMQ服務開啟。
參考:
https://blog.csdn.net/anzhsoft2008/column/info/rabbitmq
https://blog.csdn.net/lmj623565791/article/list/7