使用Rabbitmq DefaultConsumer通道发布

使用Rabbitmq DefaultConsumer通道发布,rabbitmq,Rabbitmq,DefaultConsumer有一个绑定到的通道,可以通过getChannel()获取该通道。我可以在handleDelivery中使用此频道将内容发布到另一个队列,还是应该创建一个新的factory+connection+channel trifecta并使用它进行发布?当消费者从其队列中消费事件时,我想将事件发布到另一个队列,只是不确定消费者频道是否可以重新用于发布,以及这样做是否安全。最佳做法是使用不同的频道 你不应该使用同一个频道来消费和发布你能详细说明原因吗?我在邮件列表上得到了类似的

DefaultConsumer有一个绑定到的通道,可以通过
getChannel()
获取该通道。我可以在
handleDelivery
中使用此频道将内容发布到另一个队列,还是应该创建一个新的factory+connection+channel trifecta并使用它进行发布?当消费者从其队列中消费事件时,我想将事件发布到另一个队列,只是不确定消费者频道是否可以重新用于发布,以及这样做是否安全。

最佳做法是使用不同的频道


你不应该使用同一个频道来消费和发布

你能详细说明原因吗?我在邮件列表上得到了类似的答案,但我还不确定它背后的技术问题到底是什么。如果你在handleDelivery中使用该频道,它不是在同一个线程中吗?除非接受消息和发布是在后台的不同线程中进行的。发布是异步的,否则通道可能仍然很忙。打开另一个渠道更便宜。我建议在消费者范围之外开辟一个新渠道,并加以利用