【发布时间】:2012-01-18 02:17:49
【问题描述】:
我正在使用 RabbitTemplate 类使用 spring amqp 写入 RabbitMQ 队列。我使用 convertAndSend 方法将消息发送到队列。这在正常情况下效果很好,但如果队列不存在,它似乎会静默失败。不会引发异常,并且不会将错误/调试消息记录到记录器。
对我来说确保消息已送达的最佳方式是什么?
这是代码当前正在执行的操作的示例。
RabbitTemplate template = new RabbitTemplate(factory);
template.setQueue(queueName);
template.setRoutingKey(queueName);
template.convertAndSend(message);
【问题讨论】:
-
您确定没有记录任何消息吗?您是否尝试过故意关闭经纪人的单元测试?
-
如果代理关闭,我对静默失败的说法是不正确的,如果代理关闭,我确实会收到 UnknownHostException。我已经更新了这个问题。也就是说,如果队列不存在,我仍然没有收到任何异常或错误消息。
-
你能把sn-p的代码贴在你发送消息的地方吗?
-
我添加了一个代码示例。我猜我必须注册某种监听器才能查明消息到底发生了什么,但我找不到任何支持这一点的信息。
-
问题可能是RabbitMQ上的定义。你确定交换、路由键和队列有正确的绑定吗?你是怎么做这个设置的?用手?你可以用 Spring 来做,如果它退出它不会覆盖定义。我的猜测是定义是错误的。
标签: java spring rabbitmq amqp spring-amqp