快问快答:
1. 什么是RabbitMQ?
message broker,消息发送的中介,提供的是消息送达的配套服务。
在邮局送信的类比例子中,RabbitMQ的角色是邮筒、邮递员、邮局几种功能的综合。
2. 基本术语
Producer,消息生产者
Consumer,消息消费者(或接收者)
Queue,RabbitMQ用来暂存消息的地方
从Hello,world!开始
目标:
1)建立发送者应用,发送一个消息到RabbitMQ:Hello, world!
2)建立一个接受者,从RabbitMQ顺利收到该消息;
HOW TO:
1)安装RabbitMQ服务
每个人的操作环境不同,有人使用Windows本地环境,有人使用MAC本地环境(本文),有人使用云平台,这里不细数如何安装启动RabbitMQ服务。
2)建立RabbitMQ的消息生产者应用(Java)
2.1)初始化
本文使用Idea IDE,直接建立一个简单Java Hello world应用即可
初始项目结构如图:
2.2)引入RabbitMQ Java支持库
需要引入RabbitMQ的Java客户端库,以及依赖的相关类库,如下图所示:
Idea引入三个类库后的项目结构:
2.3)开始构建生产者
2.3.1)定义暂存消息的队列 Queue 名字
2.3.2)要发送消息,首先要和RabbitMQ服务联系上:
图中1,就是指定一下RabbitMQ的地址信息,即RabbitMQ服务的IP和端口信息,RabbitMQ服务的默认端口号应该是 5672
图中2,建立一个新的TCP连接到RabbitMQ 服务器
2.3.3)建立通信 Channel,发送消息
Channel的概念,后续再来讲解,此刻可以想象理解为通信的管道即可。
在发送消息之前,有一件事要明确,RabbitMQ是否已经有了消息存在哪里的信息,Queue!
queueDeclare 告诉RabbitMQ,channel绑定到一个名为 MY_QUEUE_NAME 对应的字符串 的队列(如果不存在,RabbitMQ会创建的)
发送消息
运行
从程序上看,所有API调用都成功了。有没有办法知道消息是不是真的发送成功了?
1)rabbitmqctl list_queues
命令可以查看所有的queue信息,后面这个1应该猜到了,就是当前 hello 这个queue的暂存消息数量(未消费的)
2)http://localhost:15672/#/
RabbitMQ提供了Web 管理界面,可以查看RabbitMQ的很多信息
以上的程序有个问题:
运行之后,有没有发现程序并没有结束?从操作台看到RabbitMQ的连接依然存在?
程序没有关闭channel 和 connection!
当然,有更好的写法:
这样就无须自己手动编码去关闭 channel 和 connection 拉。
消息队列 RabbitMQ 准入门系列 (一)Hello, world! 消息发送
原文:https://www.cnblogs.com/craigxy/p/10528479.html