是否可以将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
来支持这一点?
答案 0 :(得分:1)
否;不支持;一个请求仅返回一个答复。
客户端也很难编写代码-它怎么知道预期会有多少响应? def edit_fee(request, pk):
app = settings.CONFIG
post = get_object_or_404(SchoolFees, pk=pk)
if request.method == 'POST':
form = FeesCreationForm(request.POST, instance=post)
if form.is_valid():
form.save()
messages.add_message(request, messages.WARNING, "Fees record updated successfully")
return redirect('bursary:create_fee')
else:
# bring edit form out
form = FeesCreationForm(instance=post)
table = FeesTable(SchoolFees.objects.all())
RequestConfig(request, paginate={'per_page': 10}).configure(table)
context = {"form": form, "fees": table, 'app': app}
return render(request, 'editfee.html', context)
当然不能处理多个响应。
如果您确实要发送多个响应,请使用RabbitTemplate
在服务器端发送答复,而不使用请求/答复消息。