首页 > 其他 > 详细

消息队列 RabbitMQ 准入门系列 (一)Hello, world! 消息发送

时间:2019-03-14 11:16:31      阅读:221      评论:0      收藏:0      [点我收藏+]

快问快答:

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!