rabbitmq集群的部署

29 篇文章 1 订阅
24 篇文章 0 订阅

部署记录

docker network create rabbit
docker run -d --hostname mq1 --name mq1 -p 5672:5672 -p 15672:15672 --network rabbit -e RABBITMQ_ERLANG_COOKIE='rabbitmqCookie' rabbitmq
docker run -d --hostname mq2 --name mq2 --network rabbit -e RABBITMQ_ERLANG_COOKIE='rabbitmqCookie' --link mq1:mq1 rabbitmq
docker exec -it mq2 bash
cd /usr/sbin
rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@mq1
rabbitmqctl start_app

docker run -d --hostname mq3 --name mq3 --network rabbit -e RABBITMQ_ERLANG_COOKIE='rabbitmqCookie' --link mq1:mq1 rabbitmq
docker exec -it mq3 bash
cd /usr/sbin
rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@mq1
rabbitmqctl start_app
docker exec -it mq1 bash
cd /usr/sbin
rabbitmq-plugins enable rabbitmq_management
rabbitmqctl cluster_status

添加策略

#添加策略
rabbitmqctl set_policy ha-all "test" '{"ha-mode":"all","ha-sync-mode":"automatic"}'

或者使用UI界面添加,更加方便

添加完之后,我们使用界面,或者Python生成一个消息列队

#server
import pika
connection=pika.BlockingConnection(pika.ConnectionParameters(host="192.168.42.75",port=5672))
channel=connection.channel()
channel.queue_declare(queue="test",durable=True) #durable代表是否持久化
print("public queue test and body")
while 1:
    line=input()
    channel.basic_publish(exchange='',routing_key='test',body=line) # #注意当未定义exchange时,routing_key需和queue的值保持一致

connection.close()

#client
import pika
connection=pika.BlockingConnection(pika.ConnectionParameters(host="192.168.42.75",port=5672))
channel=connection.channel()
channel.queue_declare(queue="test",durable=True) #durable代表是否持久化
def callback(ch,method,prop,body):
    print("recv: %s" % body)

channel.basic_consume(on_message_callback=callback,queue='test',auto_ack=True) #auto_ack 收到后是否删除
channel.start_consuming()

 以上配置生效后,会自动将交换机与列队变成自动HA,进行镜像

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值