优势:
解耦:请求通过mq提高容错性,
异步提速:请求到mq,直接返回给客户端,剩下的mq处理
削峰填谷:请求到mq客户端慢慢处理

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 中的 <<“guest”>>,只保留guest
启动服务<code>systemctl start rabbitmq-server</code>
创建一个用户,登陆web端地址<code>ip:15672</code>
创建一个虚拟机
赋予权限
配置读取工具类
连接工具类
helloworld(发送接收)
workqueues模式(1生产对多消费者)
代码
解析
默认使用平分的策略,例如99个消息,共有3个消费者,平均每个消费者消费33个
<code>channel.basicQos(1)</code>意思当前的确认消费完后再消费其他的
发布订阅模式(可视化页面创建交换机名为发布订阅交换机 类型为FANOUT)
发布订阅模式与工作队列模式
工作队列模式消费者对消息是竞争关系而发布订阅模式是共享
创建路由,队列与交换机绑定后会消息会从路由同步到队列
路由模式(可视化页面创建交换机名为路由模式交换机 类型为direct)
路由模式就是比发布订阅模式分的更细,同一个交换机下可根据不同的路由key去发送,不同的路由key也可以绑定不同的队列
topic模式
代码:
路由模式属于对routekey精准匹配,topic模式属于可以使用通配符匹配
#routingkey一般使用一个或多个词组成,使用.进行分割,#匹配一个或多个词,*匹配一个词
总结5种模式
确认
confirm:是否能够发送到指定的交换机
return:是否能够发送到队列
生产者配置文件
生产者
配置文件
2.消费者监听器
连接配置
总结
队列设置x-message-ttl消息到时间不消费会被删除,被消费但未确认的不会删除
队列x-expires队列到时间没有消费者会自动干掉这个队列
消息的Expiration,这个不会到时间干掉而是在消费时检查这个消息是否有效,无效删除
消息进入死信队列的条件
超时未消费
被拒收且不返回到队列
队列长度超出
延时队列是基于死信队列,例如普通队列设置30分钟超时,那么你直接去取死信队列中的数据,那么就是延时半小时的消息
作者: JaminYe
出处:https://www.cnblogs.com/JaminYe/p/15548507.html/
版权声明:本文原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。