我正在按照Stock Trading
示例的说明进行操作,其中概述了如何在spring-amqp
中使用请求/回复消息:http://static.springsource.org/spring-amqp/docs/1.2.x/reference/html/sample-apps.html#d4e742
查看ServerHandler
类,它是一个消息驱动的POJO,恰好也能发送回复消息......我没有看到我们可以为content-type
注入MessageProperties的地方
我已经调整了这个示例,我想返回一个xml消息,冒充一个简单的字符串......但是当ServerHandler
将我的回复发布到RabbitMQ时,它看起来像:
properties:
correlation_id: 9873f420-89e5-465d-aa60-ec9281ee48ae
priority: 0
delivery_mode: 2
headers:
__TypeId__: java.lang.String
content_encoding: UTF-8
content_type: application/json
payload:
"<?xml version='1.0' encoding='UTF-8'?>\n<stuff></stuff>
最终(我的猜测是)我的客户端应该正在阅读这个...因为content_type
被错误地设置为application/json
而无法解析对象而我的用例失败所以我收到了null
回复了。
问)有没有人知道如何在spring-amqp请求/回复消息中为回复设置内容类型?
更新#1
问:或许我需要的是确保jsonMessageConverter
仅用于读取requestQueue之外的消息,而不是当我想将回复放回responseQueue时...任何关于如何获取的想法配置?这是我当前的appContext.xml文件的片段:
<listener-container
concurrency="5"
connection-factory="connectionFactory"
message-converter="jsonMessageConverter"
xmlns="http://www.springframework.org/schema/rabbit">
<listener ref="serverHandler" method="handleMessage" queue-names="#{queue.name}" />
</listener-container>
答案 0 :(得分:2)
如果您说您正在接收JSON但想要返回XML,则可以使用自定义MessageConverter
,该自定义JsonMessageConverter
委托入站方SimpleMessageConverter
和出站content-type
侧;它还可以根据需要设置{{1}}消息属性。