我使用RabbitTemplate类使用spring amqp写入RabbitMQ队列。我使用convertAndSend方法将消息发送到队列。这在正常情况下运行良好,但如果队列不存在,它似乎无声地失败。不会抛出异常,也不会将错误/调试消息记录到记录器中。
确保邮件传递的最佳方法是什么?
以下是代码当前正在执行的操作的示例。
RabbitTemplate template = new RabbitTemplate(factory);
template.setQueue(queueName);
template.setRoutingKey(queueName);
template.convertAndSend(message);
答案 0 :(得分:2)
RabbitMQ客户端将消息发送到没有绑定队列以接受消息的代理并不是错误。 RabbitMQ将默默地放弃它,客户端将更加明智。如果你没有对你的消息感兴趣的队列,那么经纪人还没有其他许多选择。
也就是说,如果通过设置mandatory标志将消息静默删除,您可以让RabbitMQ抱怨。我不知道Spring AMQP接口是否支持它,但它确实可以在RabbitMQ Java客户端库中使用。
答案 1 :(得分:1)
您可以使用mandatory
并启用发布商退货(针对无法投递的邮件)。