2016-01-15 29 views
1

我有一个兔子mq服务器运行,有一个直接交换,我的所有消息都经过。消息被路由到单个非永久性队列(它们可能会持续几个小时)。我刚开始阅读有关交换机的队列绑定,并对我是否真的需要将我的队列绑定到交换机感到困惑。我正在使用pikabasic_publishconsume函数,所以也许这是暗示?不太确定只是想多了解一点。我需要用rabbitmq绑定直接交换吗?

谢谢

回答

1

总是。事实上,即使排队是严格的消费者实体,他们应该被宣布为在生产者创建交易时与生产者直接交换的约束。

+0

它似乎没有绑定工作,但没有看到任何问题。我将在未来遇到任何事情? – tuck

+0

归结为最佳做法。这不仅限于直接交换。 – pbhowmick

+0

假设发布者在任何消费者联机之前开始发布,并将队列声明并绑定到该交换。在这种情况下,这些消息可能会被丢弃或DLOed。 – pbhowmick

1

您必须将某个绑定密钥与某个队列绑定到一个交换机,否则将丢弃这些消息。

这是amqp代理的工作方式,发布者发布消息与某个密钥交换,amqp代理(RabbitMq)将此消息从交换路由到与交换给定密钥绑定的那些队列。

但是,在发布者中声明和绑定队列并不是强制性的。 您可以在订阅者中执行此操作,但请确保在启动发布商之前运行订阅者。

如果您认为您的邮件被路由到队列而没有绑定,那么您会丢失一些东西。

2

如果您使用默认交换直接路由(exchange =''),那么您不必声明任何绑定。默认情况下,所有队列都绑定到默认交换。只要路由密钥与队列名称完全匹配(并且队列存在),默认交换iw