一【介绍】
github:https://github.com/rabbitmq/rabbitmq-server
功能介绍:
RabbitMQ是一套开源(MPL)的消息队列服务软件,是由 LShift 提供的一个 Advanced Message Queuing Protocol (AMQP) 的开源实现,由以高性能、健壮以及可伸缩性出名的 Erlang 写成。
RabbitMQ特点:
- 开源、性能优秀,稳定性保障
- 提供可靠性消息投递模式、返回模式
- 与Spring AMQP完美整合,API丰富
- 集群模式丰富,表达式配置,HA模式,镜像队列模型
- 保证数据不丢失的前提做到高可靠性、可用性
MQ典型应用场景:
- 异步处理。把消息放入消息中间件中,等到需要的时候再去处理。
- 流量削峰。例如秒杀活动,在短时间内访问量急剧增加,使用消息队列,当消息队列满了就拒绝响应,跳转到错误页面,这样就可以使得系统不会因为超负载而崩溃。
- 日志处理
- 应用解耦。假设某个服务A需要给许多个服务(B、C、D)发送消息,当某个服务(例如B)不需要发送消息了,服务A需要改代码再次部署;当新加入一个服务(服务E)需要服务A的消息的时候,也需要改代码重新部署;另外服务A也要考虑其他服务挂掉,没有收到消息怎么办?要不要重新发送呢?是不是很麻烦,使用MQ发布订阅模式,服务A只生产消息发送到MQ,B、C、D从MQ中读取消息,需要A的消息就订阅,不需要了就取消订阅,服务A不再操心其他的事情,使用这种方式可以降低服务或者系统之间的耦合。
二【docker部署】
2.1doccker 镜像版本:
rabbitmq:management
最新版本:3.8.14
2.2 集群部署
docker run -d --hostname rabbit_host1 --name rabbitmq1 -p 15672:15672 -p 5672:5672 -e RABBITMQ_ERLANG_COOKIE='rabbitmq_cookie' rabbitmq:management docker run -d --hostname rabbit_host2 --name rabbitmq2 -p 5673:5672 --link rabbitmq1:rabbit_host1 -e RABBITMQ_ERLANG_COOKIE='rabbitmq_cookie' rabbitmq:management docker run -d --hostname rabbit_host3 --name rabbitmq3 -p 5674:5672 --link rabbitmq1:rabbit_host1 --link rabbitmq2:rabbit_host2 -e RABBITMQ_ERLANG_COOKIE='rabbitmq_cookie' rabbitmq:management |
---|
2.3 加入节点到集群
设置节点1:
#docker exec -it rabbitmq1 bash #rabbitmqctl stop_app #rabbitmqctl reset #rabbitmqctl start_app #exit |
---|
设置节点2:
#docker exec -it rabbitmq2 bash #rabbitmqctl stop_app #rabbitmqctl reset #rabbitmqctl join_cluster --ram rabbit@rabbit_host1 #rabbitmqctl start_app #exit |
---|
设置节点3:
#docker exec -it rabbitmq3 bash #rabbitmqctl stop_app #rabbitmqctl reset #rabbitmqctl join_cluster --ram rabbit@rabbit_host1 #rabbitmqctl start_app #exit |
---|
3.4 登录
设置好之后,使用 http://ip:15672 进行访问,默认账号密码:guest/guest
如果遇到版本升级报错内容为:ReferenceError: disable_stats is not defined
清除浏览器缓存,即可登录。