我有一个场景,其中有一个应用程序正在生成不同类型的有趣事件(不是命令)。生产者应用程序不关心由谁以及如何处理事件。
我正在实现一个消费者,他将听取一些已发布的事件并适当地处理它们。消费者应用程序想要检查发布者应用程序交换是否存在。那么,问题是如何通过使用 spring 提供的 rabbit/AMQP 库来检查是否存在具有特定名称的交换?
我想,这可以通过尝试将队列绑定到不存在的交换来间接处理,从而导致异常。我正在寻找更好的方法来处理这种情况。
我有一个场景,其中有一个应用程序正在生成不同类型的有趣事件(不是命令)。生产者应用程序不关心由谁以及如何处理事件。
我正在实现一个消费者,他将听取一些已发布的事件并适当地处理它们。消费者应用程序想要检查发布者应用程序交换是否存在。那么,问题是如何通过使用 spring 提供的 rabbit/AMQP 库来检查是否存在具有特定名称的交换?
我想,这可以通过尝试将队列绑定到不存在的交换来间接处理,从而导致异常。我正在寻找更好的方法来处理这种情况。
使用被动声明和RabbitTemplate
; 就像是...
final String exchange = "foo";
boolean exists rabbitTemplate.execute(new ChannelCallback<DeclareOk>() {
@Override
public DeclareOk doInRabbit(Channel channel) throws Exception {
try {
return channel.exchangeDeclarePassive(exchange);
}
catch (Exception e) {
if (logger.isDebugEnabled()) {
logger.debug("Exchange '" + exchange + "' does not exist");
}
return null;
}
}
}) != null;