MQ(二)RabbitMQ快速入门
创始人
2024-01-28 16:57:51
0

一、RabbitMQ 概述和安装

RabbitMQ 是基于 Erlang 语言开发的开源消息通信中间件

1. RabbitMQ的结构和概念

RabbitMQ中的几个概念:

(1)channel:操作MQ的工具

(2)exchange:路由消息到队列中

(3)queue:缓存消息

(4)virtual host:虚拟主机,是对queue、exchange等资源的逻辑分组 

二、常见消息模型

MQ的官方文档中给出了5个 MQ 的 Demo 示例,对应了几种不同的用法:

(1)基本消息队列(BasicQueue)

(2) 工作消息队列(WorkQueue)

 

 (3)发布订阅(Publish、Subscribe),又根据交换机类型不同分为三种:

1️⃣Fanout Exchange:广播

2️⃣Direct Exchange:路由

 

3️⃣Topic Exchange:主题

 

 

三、快速入门

1. HelloWorld 案例

官方的 HelloWorld 是基于最基础的消息队列模型来实现的,只包括三个角色:

(1)publisher:消息发布者,将消息发送到队列 queue

(2)queue:消息队列,负责接受并缓存消息

(3)consumer:订阅队列,处理队列中的消息

(1)基本消息队列的消息发送流程:

1️⃣建立 connection

2️⃣创建 channel

3️⃣利用 channel 声明队列

4️⃣利用 channel 向队列发送消息

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("itcast");factory.setPassword("123321");// 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();}
}

 (2)基本消息队列的消息接收流程:

1️⃣建立 connection

2️⃣创建 channel

3️⃣利用 channel 声明队列

4️⃣定义 consumer 的消费行为 handleDelivery()

5️⃣利用 channel 将消费者与队列绑定

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("itcast");factory.setPassword("123321");// 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("等待接收消息。。。。");}
}

相关内容

热门资讯

哪些风口项目适合小本创业 哪些... 所谓的创业风口,从来都是无稽之谈,但凡能摆在明面上的都过了红利期了。雷军先生“只要是头猪,站在风口上...
有哪些风口上适合个体创业的项目... 来源:耕叔说钱()作者:耕叔疫情之下,除了少数余粮较多的地主家庭,心理不慌以外。绝大多数人,是受影响...
这几个小生意项目 哪些风口项目... 2、农村合作医疗城市到处有医院,但农村刚好相反。看个病都是非常麻烦的事。所以农村开诊所也是一个非常不...
年轻人最适小本创业好项目首选合... 延伸阅读****'%年轻人%'年青人创业找项目年轻人六大创业好项目1574人年青人敢闯敢拼的精神才是...
小本创业的好项目 小本创业的好...   :野菜种植寻找一块城乡结合处土地,投资种植芦笋,芦蒿,马兰,荠菜等绿色食品,投资小,见效快,市场...
加盟小本创业项目 加盟小本创业... 首页商务服务详情加盟小本创业项目时间:2021-02-加盟小本创业项目一般大的商场***好采取可以保...
小本创业项目,休闲食品加盟! ... 生活水平的普遍提高同时也带动了潜力无限的休闲食品行业的发展,如今休闲食品在国内的年平均增长率达到了2...
个人创业做什么项目好 初涉商业... 关注上方网络营销渠道,学百集网络营销课个人创业做什么项目好?推荐5个小本创业项目!个人创业做什么项目...
适合小本创业五个的好项目 穷人... 如今生活中相信很多人都有一些爱拍照,爱留念的生活习惯,人们对智能设备的使用也已经非常的普及了,有一个...
小本创业15个好项目 小本创业... 为什么穷人多不敢去创业蛋糕创业蛋糕店创业30岁女人创业做什么适合女性创业的大学生适合什么创业毕业生如...