天天看点

一文上手rabbitmq

优势:

解耦:请求通过mq提高容错性,

异步提速:请求到mq,直接返回给客户端,剩下的mq处理

削峰填谷:请求到mq客户端慢慢处理

一文上手rabbitmq

broker:rabbitmq服务器

connection:tcp长连接

channel:connection开销大,轻量级,可复用

vhost:虚拟主机,相当于mysql中的数据库

exchange:根据不同的分发规则将消息分发到队列,有不同类型

queue:队列

binding:路由器与队列的连接,包含routing key保存在路由器中,作为分发依据

上传文件3.6.5版本及安装包

安装Erlang<code>rpm -iUvh erlang-18.3-1.el7.centos.x86_64.rpm</code>

安装socat<code>rpm -iUvh socat-1.7.3.2-1.1.el7.x86_64.rpm</code>

如果报错依赖监测失败先安装tcp_wrappers<code>yum install tcp_wrappers -y</code>再次安装socat

安装rabbitmq<code>rpm -iUvh rabbitmq-server-3.6.5-1.noarch.rpm</code>

开启管理界面<code>rabbitmq-plugins enable rabbitmq_management</code>

修改配置文件<code>vim /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.5/ebin/rabbit.app</code> loopback_users 中的 &lt;&lt;“guest”&gt;&gt;,只保留guest

启动服务<code>systemctl start rabbitmq-server</code>

创建一个用户,登陆web端地址<code>ip:15672</code>

一文上手rabbitmq

创建一个虚拟机

一文上手rabbitmq

赋予权限

一文上手rabbitmq

配置读取工具类

连接工具类

helloworld(发送接收)

workqueues模式(1生产对多消费者)

代码

解析

默认使用平分的策略,例如99个消息,共有3个消费者,平均每个消费者消费33个

<code>channel.basicQos(1)</code>意思当前的确认消费完后再消费其他的

发布订阅模式(可视化页面创建交换机名为发布订阅交换机 类型为FANOUT)

发布订阅模式与工作队列模式

工作队列模式消费者对消息是竞争关系而发布订阅模式是共享

创建路由,队列与交换机绑定后会消息会从路由同步到队列

路由模式(可视化页面创建交换机名为路由模式交换机 类型为direct)

路由模式就是比发布订阅模式分的更细,同一个交换机下可根据不同的路由key去发送,不同的路由key也可以绑定不同的队列

topic模式

代码:

路由模式属于对routekey精准匹配,topic模式属于可以使用通配符匹配

#routingkey一般使用一个或多个词组成,使用.进行分割,#匹配一个或多个词,*匹配一个词

总结5种模式

一文上手rabbitmq

确认

confirm:是否能够发送到指定的交换机

return:是否能够发送到队列

生产者配置文件

生产者

配置文件

2.消费者监听器

连接配置

总结

队列设置x-message-ttl消息到时间不消费会被删除,被消费但未确认的不会删除

队列x-expires队列到时间没有消费者会自动干掉这个队列

消息的Expiration,这个不会到时间干掉而是在消费时检查这个消息是否有效,无效删除

一文上手rabbitmq

消息进入死信队列的条件

超时未消费

被拒收且不返回到队列

队列长度超出

延时队列是基于死信队列,例如普通队列设置30分钟超时,那么你直接去取死信队列中的数据,那么就是延时半小时的消息

作者: JaminYe

出处:https://www.cnblogs.com/JaminYe/p/15548507.html/

版权声明:本文原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。