我怎么知道我的消息是用spring amqp成功发送的?

时间:2011-12-11 23:26:08

标签: java spring rabbitmq amqp spring-amqp

我使用RabbitTemplate类使用spring amqp写入RabbitMQ队列。我使用convertAndSend方法将消息发送到队列。这在正常情况下运行良好,但如果队列不存在,它似乎无声地失败。不会抛出异常,也不会将错误/调试消息记录到记录器中。

确保邮件传递的最佳方法是什么?

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

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

2 个答案:

答案 0 :(得分:2)

RabbitMQ客户端将消息发送到没有绑定队列以接受消息的代理并不是错误。 RabbitMQ将默默地放弃它,客户端将更加明智。如果你没有对你的消息感兴趣的队列,那么经纪人还没有其他许多选择。

也就是说,如果通过设置mandatory标志将消息静默删除,您可以让RabbitMQ抱怨。我不知道Spring AMQP接口是否支持它,但它确实可以在RabbitMQ Java客户端库中使用。

答案 1 :(得分:1)

您可以使用mandatory并启用发布商退货(针对无法投递的邮件)。