中的以下类包含在几个使用者应用程序中:
@Component
@Configuration
public class HealthListener {
public static final String HEALTH_CHECK_QUEUE_NAME = "healthCheckQueue";
public static final String HEALTH_CHECK_FANOUT_EXCHANGE_NAME = "health-check-fanout";
@Bean
public Binding healthListenerBinding(
@Qualifier("healthCheckQueue") Queue queue,
@Qualifier("instanceFanoutExchange") FanoutExchange exchange) {
return BindingBuilder.bind(queue).to(exchange);
}
@Bean
public FanoutExchange instanceFanoutExchange() {
return new FanoutExchange(HEALTH_CHECK_FANOUT_EXCHANGE_NAME, true, false);
}
@Bean
public Queue healthCheckQueue() {
return new Queue(HEALTH_CHECK_QUEUE_NAME);
}
@RabbitListener(queues = HEALTH_CHECK_QUEUE_NAME)
public String healthCheck() {
return "some result";
}
}
我正在尝试向Fanout Exchange发送消息,并接收所有回复,以了解哪些消费者正在运行。
我可以发送一条消息并得到这样的第一个回复:
@Autowired
RabbitTemplate template;
// ...
String firstReply = template.convertSendAndReceiveAsType("health-check-fanout", "", "", ParameterizedTypeReference.forType(String.class));
不过,我需要对这条信息做最全面的回复,而不仅仅是第一条。我需要设置一个应答侦听器,但我不确定如何设置。