Spring AMQP MessageListenerAdapter - Как разбить ответ на несколько сообщений? - PullRequest
0 голосов
/ 15 января 2019

Можно ли разделить ответ delegate из MessageListenerAdapter на отдельные сообщения?

public class MyBean {    
  public List<Response> handleMessage(final MyPayload payload) {
    return ...
  }
}

...

@Bean
public MessageListenerContainer container() {
    final SimpleMessageListenerContainer container = containerFactory.createListenerContainer();
    container.setListenerId("myListener");
    container.setQueueNames("myQueue");

    final MessageListenerAdapter listenerAdapter = new MessageListenerAdapter(new MyBean(), new Jackson2JsonMessageConverter());
    listenerAdapter.setResponseExchange("");
    listenerAdapter.setResponseRoutingKey("other");
    container.setMessageListener(listenerAdapter);
    return container;
}

Адаптер помещает одно сообщение в «другую» очередь, как и ожидалось, но я хотел бы разделить ответ и отправить несколько сообщений для каждого элемента в результате List<Response>. Это возможно OOTB? Должен ли я написать пользовательский MessageConverter для поддержки этого?

1 Ответ

0 голосов
/ 15 января 2019

Нет; это не поддерживается; запрос возвращает только один ответ.

Со стороны клиента тоже было бы сложно писать код - как узнать, сколько ответов ожидается? RabbitTemplate определенно не обрабатывает множественные ответы.

Если вы действительно хотите отправить несколько ответов, используйте RabbitTemplate для отправки ответов на стороне сервера и не используйте обмен запросами / ответами.

...