7

我正在使用 RabbitTemplate 类使用 spring amqp 写入 RabbitMQ 队列。我使用 convertAndSend 方法将消息发送到队列。这在正常情况下效果很好,但如果队列不存在,它似乎会静默失败。不会引发异常,并且不会将错误/调试消息记录到记录器中。

对我来说确保消息已送达的最佳方式是什么?

这是代码当前正在执行的操作的示例。

RabbitTemplate template = new RabbitTemplate(factory);
template.setQueue(queueName);
template.setRoutingKey(queueName);
template.convertAndSend(message);
4

2 回答 2

4

RabbitMQ 客户端向没有绑定队列以接受消息的代理发送消息并不是错误。RabbitMQ 会默默地丢弃它,客户端也不会更聪明。如果您没有对您的消息感兴趣的队列,则代理没有许多其他可用选项。

也就是说,如果消息最终会通过设置强制标志以静默方式丢弃,您可以让 RabbitMQ 抱怨。我不知道 Spring AMQP 接口是否支持它,但它肯定在 RabbitMQ Java 客户端库中可用。

于 2011-12-12T18:05:27.970 回答
1

您可以使用mandatory也可以启用发布者返回(对于无法传递的消息)。

于 2014-04-26T19:54:48.080 回答