ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
发布消息是一种异步机制,默认情况下,RabbitMQ只删除无法路由的消息。 要成功发布,您可以收到异步确认,如下面的“发布者确认和返回”一节中所述。 让我们考虑两种失败情况: * 发布到交换机但没有匹配的目标队列 * 发布到不存在的交换机 第一种情况由发布者返回涵盖,如下面的“发布者确认和返回”一节中所述。 对于第二种情况,消息被删除,不生成返回; 底层渠道因例外而关闭。 默认情况下,会记录此异常,但您可以使用`CachingConnectionFactory`注册`ChannelListener`以获取此类事件的通知: ~~~java this.connectionFactory.addConnectionListener(new ConnectionListener() { @Override public void onCreate(Connection connection) { } @Override public void onShutDown(ShutdownSignalException signal) { //您可以检查signal的reason属性以确定发生的问题。 } }); ~~~ 要检测发送线程上的异常,可以在RabbitTemplate上设置setChannelTransacted(true),并在txCommit()上检测异常。 但是,事务会严重影响性能,因此在为这一个用例启用事务之前请仔细考虑这一点。