0

我正在按照Stock Trading示例的说明进行操作,其中概述了如何使用请求/回复消息spring-amqphttp ://static.springsource.org/spring-amqp/docs/1.2.x/reference/html/sample-apps.html #d4e742

查看ServerHandler作为消息驱动的 POJO 的类,它恰好也能够发送回复消息......我没有看到可以注入 MessageProperties 的地方content-type

我已经调整了这个示例,我想返回一个伪装成简单字符串的 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回复作为回复。

Q) 有谁知道如何在 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>
4

1 回答 1

2

如果您说您正在接收 JSON 但想要返回 XML,则可以使用MessageConverter委托给JsonMessageConverter入站端和SimpleMessageConverter出站端的自定义;它还可以content-type根据需要设置消息属性。

于 2013-06-13T06:47:46.113 回答