RabbitMQ快速入门--简单队列模型
生活随笔
收集整理的這篇文章主要介紹了
RabbitMQ快速入门--简单队列模型
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
入門案例
?
簡單隊列模式的模型圖:
官方的HelloWorld是基于最基礎的消息隊列模型來實現的,只包括三個角色:
-
publisher:消息發布者,將消息發送到隊列queue
-
queue:消息隊列,負責接受并緩存消息
-
consumer:訂閱隊列,處理隊列中的消息
publisher實現
思路:
-
建立連接
-
創建Channel
-
聲明隊列
-
發送消息
-
關閉連接和channel
代碼實現:
import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; import com.rabbitmq.client.ConnectionFactory; import org.junit.Test;import java.io.IOException; import java.util.concurrent.TimeoutException;public class PublisherTest {@Testpublic void testSendMessage() throws IOException, TimeoutException {// 1.建立連接ConnectionFactory factory = new ConnectionFactory();// 1.1.設置連接參數,分別是:主機名、端口號、vhost、用戶名、密碼factory.setHost("192.168.150.101");factory.setPort(5672);factory.setVirtualHost("/");factory.setUsername("rabbitmq");factory.setPassword("rabbitmq");// 1.2.建立連接Connection connection = factory.newConnection();// 2.創建通道ChannelChannel channel = connection.createChannel();// 3.創建隊列String queueName = "simple.queue";channel.queueDeclare(queueName, false, false, false, null);// 4.發送消息String message = "hello, rabbitmq!";channel.basicPublish("", queueName, null, message.getBytes());System.out.println("發送消息成功:【" + message + "】");// 5.關閉通道和連接channel.close();connection.close();} }consumer實現
代碼思路:
-
建立連接
-
創建Channel
-
聲明隊列
-
訂閱消息
代碼實現:
import java.io.IOException; import java.util.concurrent.TimeoutException;public class ConsumerTest {public static void main(String[] args) throws IOException, TimeoutException {// 1.建立連接ConnectionFactory factory = new ConnectionFactory();// 1.1.設置連接參數,分別是:主機名、端口號、vhost、用戶名、密碼factory.setHost("192.168.150.101");factory.setPort(5672);factory.setVirtualHost("/");factory.setUsername("rabbitmq");factory.setPassword("rabbitmq");// 1.2.建立連接Connection connection = factory.newConnection();// 2.創建通道ChannelChannel channel = connection.createChannel();// 3.創建隊列String queueName = "simple.queue";channel.queueDeclare(queueName, false, false, false, null);// 4.訂閱消息channel.basicConsume(queueName, true, new DefaultConsumer(channel){@Overridepublic void handleDelivery(String consumerTag, Envelope envelope,AMQP.BasicProperties properties, byte[] body) throws IOException {// 5.處理消息String message = new String(body);System.out.println("接收到消息:【" + message + "】");}});System.out.println("等待接收消息。。。。");} }總結
基本消息隊列的消息發送流程:
建立connection
創建channel
利用channel聲明隊列
利用channel向隊列發送消息
基本消息隊列的消息接收流程:
建立connection
創建channel
利用channel聲明隊列
定義consumer的消費行為handleDelivery()
利用channel將消費者與隊列綁定
總結
以上是生活随笔為你收集整理的RabbitMQ快速入门--简单队列模型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RabbitMQ快速入门--消息模型介绍
- 下一篇: DockerCompose-部署微服务集