2016-03-03 75 views
0

我创建了一个队列“a.1”,一个交换“a”并通过一个rabbitmq通道将它们绑定在一起。该频道连接约3百个频道。正常运行20-30分钟后,绑定消失,队列绑定为默认交换。我看到它在rabbitmq管理员,我看到队列一旦关闭并自动恢复。恢复后,我可以看到频道改变。频道信息:IP:2341(633),端口改为IP:3350。但队列绑定到默认exchange.Why rabbitmq有这种奇怪的行为?如何避免它?为什么rabbitmq的队列绑定是自动更改的?

+0

以下是什么意思“他的频道在一个有大约3百个频道的连接中”?你如何创建这个交换,即你设置了哪个自动删除标志?你如何绑定队列?一些代码会很好... – cantSleepNow

+0

1,获取一个rabbitmq连接2,从连接中获取一个通道。3创建一个交换,4创建一个带params :: queue的队列false:自动删除true。重复2,3,4次300次,所以这个频道使用一个连接。 – user2219372

+0

对不起,我不明白...如果你只有一个客户,你为什么每次都创建一个连接?你也没有说你如何创建一个交流。 – cantSleepNow

回答

1

您正在使用auto-delete队列,这意味着如果所有消费者失败,队列将自动删除。然后另一个频道可以用相同的名称重新创建队列。 因此,如果您创建具有相同名称的队列,则可以确保每次创建队列时都会绑定它。或者,您可以添加到期TTL自动删除队列以等待删除前一段时间(以允许另一个通道开始消耗)。