RabbitMQ快速入门--简单队列模型
生活随笔
收集整理的這篇文章主要介紹了
RabbitMQ快速入门--简单队列模型
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
入門(mén)案例
?
簡(jiǎn)單隊(duì)列模式的模型圖:
官方的HelloWorld是基于最基礎(chǔ)的消息隊(duì)列模型來(lái)實(shí)現(xiàn)的,只包括三個(gè)角色:
-
publisher:消息發(fā)布者,將消息發(fā)送到隊(duì)列queue
-
queue:消息隊(duì)列,負(fù)責(zé)接受并緩存消息
-
consumer:訂閱隊(duì)列,處理隊(duì)列中的消息
publisher實(shí)現(xiàn)
思路:
-
建立連接
-
創(chuàng)建Channel
-
聲明隊(duì)列
-
發(fā)送消息
-
關(guān)閉連接和channel
代碼實(shí)現(xiàn):
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.設(shè)置連接參數(shù),分別是:主機(jī)名、端口號(hào)、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.創(chuàng)建通道ChannelChannel channel = connection.createChannel();// 3.創(chuàng)建隊(duì)列String queueName = "simple.queue";channel.queueDeclare(queueName, false, false, false, null);// 4.發(fā)送消息String message = "hello, rabbitmq!";channel.basicPublish("", queueName, null, message.getBytes());System.out.println("發(fā)送消息成功:【" + message + "】");// 5.關(guān)閉通道和連接channel.close();connection.close();} }consumer實(shí)現(xiàn)
代碼思路:
-
建立連接
-
創(chuàng)建Channel
-
聲明隊(duì)列
-
訂閱消息
代碼實(shí)現(xiàn):
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.設(shè)置連接參數(shù),分別是:主機(jī)名、端口號(hào)、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.創(chuàng)建通道ChannelChannel channel = connection.createChannel();// 3.創(chuàng)建隊(duì)列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("等待接收消息。。。。");} }總結(jié)
基本消息隊(duì)列的消息發(fā)送流程:
建立connection
創(chuàng)建channel
利用channel聲明隊(duì)列
利用channel向隊(duì)列發(fā)送消息
基本消息隊(duì)列的消息接收流程:
建立connection
創(chuàng)建channel
利用channel聲明隊(duì)列
定義consumer的消費(fèi)行為handleDelivery()
利用channel將消費(fèi)者與隊(duì)列綁定
總結(jié)
以上是生活随笔為你收集整理的RabbitMQ快速入门--简单队列模型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: RabbitMQ快速入门--消息模型介绍
- 下一篇: DockerCompose-部署微服务集