rabbitmq的golang版本QueueDeclare函数在消息订阅中的使用详解

消息订阅的具体实现参考官网的代码:https://www.rabbitmq.com/tutorials/tutorial-three-go.html;

主要对QueueDeclare函数的durable持久化参数和exclusive排他性参数进行说明

1、正常情况,如果我们部署的消息发布者,只需要声明exchangeName相同,以及设置为fanout扇形,那么就可以多个发布者往一个交换机发送消息,形成多个生产者。

2、但是对于订阅者,如果发布者发布的消息太多,导致单机处理不过来,或者需要防止单机挂掉,需要分布式部署,那就需要多个订阅者订阅同一个队列,并且订阅者分别部署在不同的机器上,防止单机挂掉。

3、单机部署:队列名可以随机,durable=false,exclusive=true;
分布式部署:队列名指定相同,durable=true,exclusive=false;
exclusive=true表示仅对首次声明它的连接可见, 并在连接断开时自动删除;
并且如果exclusive=true,队列名如果相同,那么除了首次创建队列成功,其余的都会创建失败;

    //单机部署,队列名填空随机生成,durable=false,exclusive=true;
	q, err := data.Ch.QueueDeclare(
		data.QuenueName, // name,如果队列名字为空,则会自动生成随机字符串;
		false,           // durable,队列不做持久化,则关闭后队列就会消息,且失去与exchange的绑定关系;
		false,           // delete when unused
		true,            // exclusive,排他性,true表示另外建立一个同样的队列会失败,如果想对个程序建立同一个队列,则设置为false;
		false,           // no-wait
		nil,             // arguments
	)
//分布式部署:QuenueName = "testlogQuenue",先指定队列名,同时durable=true持久化,exclusive=false不设置排他性。
	q, err := data.Ch.QueueDeclare(
		data.QuenueName, // name,如果队列名字为空,则会自动生成随机字符串;
		true,           // durable,队列不做持久化,则关闭后队列就会消息,且失去与exchange的绑定关系;
		false,           // delete when unused
		false,            // exclusive,排他性,true表示另外建立一个同样的队列会失败,如果想对个程序建立同一个队列,则设置为false;
		false,           // no-wait
		nil,             // arguments
	)

http://t.zoukankan.com/no-celery-p-13803419.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值