请问RabbitMQ订阅的时候, 如何不使用queueName而使用exchange和routingkey

luokery 发布于 2016/10/14 15:46
阅读 2K+
收藏 0

RabbitMQ订阅的时候, 如何不使用queue而使用exchange和routingkey!

因为是集群, 已经有exchange绑定到订阅的queueName上了,他们的routingkey不同.

发布的routingkey是:in   队列是: 随机

订阅的routingkey是:out   队列是: 随机

现在我想要在out里面订阅消息, 却无法指定queueName, 因为它是随机的.


1个应用, 在 rabbitmq(集群)上创建了2个队列:

 routingkey: in queuename:amq.xxxxx1

 routingkey:out queuename:amq.xxxxx2
现在我启动个发布程序可以发布, 但是消费的时候如何指定到routingkey呢?

加载中
0
狼来了而已
狼来了而已

取得是队列里面的数据,怎么还根据key和exchange来

狼来了而已
狼来了而已
回复 @luokery : 这个绑定一般都是在消费程序里面进行绑定,而且你的发布是in,消费怎么走到out里面,对你的这个使用场景真的不了解了
luokery
luokery
回复 @狼来了而已 : Exchange是topic的,随机是因为程序自动生成并绑定Exchange
狼来了而已
狼来了而已
回复 @luokery : 看你申明的队列和exchange都是什么类型了。为什么只能生成随机队列?
luokery
luokery
回复 @狼来了而已 : 可我不知道队列名称啊! 现在只能生成个随机队列, 然后绑定到exchange上, 并设置输出的routingkey才能用, 但是程序自动生成的queue我没有使用到, 另外我程序错误退出后这个queue中的消息我还能订阅吗?
狼来了而已
狼来了而已
@luokery 回复@luokery : 这个跟你是不是集群的有什么关系。直接绑定然后取消息就可以了
下一页
0
夜色霓虹灯
夜色霓虹灯
集群中队列的消息会同步的,消费者只要关心要消费的队列名称就行了。如果没有队列的名字,需要提前声明,并于你发送的exchange和routekey就行绑定。
0
胖子程序猿
胖子程序猿
String queueName = channel.queueDeclare().getQueue()
channel.queueBind(queueName, "amq.topic", "t1.*")
channel.basicConsume(queueName, true, .....

不指定队列名称就会重新声明一个新队列,只要把这个队列绑到你想绑的exchange和routingkey上就可以了

luokery
luokery
目前就是这样做了! 谢谢!
返回顶部
顶部