Spring AMQP MessageListenerAdapter - 如何将响应拆分为多条消息?

Spring AMQP MessageListenerAdapter - How to split response into multiple messages?

是否可以将来自 MessageListenerAdapterdelegate 的响应拆分为单独的消息?

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;
}

适配器按预期将一条消息放入 'other' 队列,但我想拆分响应并为结果 List<Response> 中的每个项目发送多条消息。这可能是 OOTB 吗?我应该写一个自定义 MessageConverter 来支持这个吗?

没有;不支持;一个请求 returns 仅一个回复。

客户端的编码也很棘手 - 它怎么知道预期有多少响应? RabbitTemplate 当然不能处理多个响应。

如果您真的想发送多个回复,请使用 RabbitTemplate 在服务器端发送回复,不要使用 request/reply 消息传递。