Следующий класс входит в несколько потребительских приложений:
@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";
}
}
Я пытаюсь отправить сообщение на разветвленный обмен и получить все ответы, чтобы узнать, какие потребители работают.
Я могу отправить сообщение и получить первый ответ, например:
@Autowired
RabbitTemplate template;
// ...
String firstReply = template.convertSendAndReceiveAsType("health-check-fanout", "", "", ParameterizedTypeReference.forType(String.class));
Однако мне нужно получить все ответы на это сообщение, а не только первое. Мне нужно настроить прослушиватель ответов, но я не знаю, как.