Spring AMQP MessageListenerAdapter - 如何将响应拆分为多条消息?
Spring AMQP MessageListenerAdapter - How to split response into multiple messages?
是否可以将来自 MessageListenerAdapter
的 delegate
的响应拆分为单独的消息?
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 消息传递。
是否可以将来自 MessageListenerAdapter
的 delegate
的响应拆分为单独的消息?
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 消息传递。