【问题标题】:Store/Serialize List as Message Spring AMQP将列表存储/序列化为消息 Spring AMQP
【发布时间】:2013-05-20 00:01:37
【问题描述】:
我是使用 RabbitMQ 的 Spring AMQP 的新手。我知道这个问题解决了一个更广泛的问题。我想将对象列表存储到可以发送给消费者的消息中。谁能提供一个简单的解决方案来解决这个问题?
我知道序列化可以成为一种解决方案,但对于我正在使用的简单应用程序来说,这将是一种过度杀伤力。消息本质上是异步的。还有其他方法吗?
【问题讨论】:
标签:
spring
serialization
message-queue
messaging
spring-amqp
【解决方案1】:
AMQP 仅支持一种类型的消息 - 二进制(字节) - 这意味着您必须序列化您的对象。
您可以选择序列化类型,例如 JSON、XML 或 Java 序列化。
【解决方案2】:
您可以使用MessageConverter,请参阅 Spring RabbitMQ 文档:
http://static.springsource.org/spring-amqp/docs/1.1.x/reference/htmlsingle/#d4e293
有一个JsonMessageConverter,这可能就是您要找的。p>
我建议不要使用标准 Java 序列化和 SimpleMessageConverter,因为那样您的实现将绑定到 Java,这将破坏 AMQP 协议概念的整个想法。
来自文档:
With AMQP being a wire-level protocol, it would be unfortunate to lose
much of that advantage with such restrictions.
这是一个取自文档的代码示例:
<bean class="org.springframework.amqp.rabbit.core.RabbitTemplate">
<property name="connectionFactory" ref="rabbitConnectionFactory"/>
<property name="messageConverter">
<bean class="org.springframework.amqp.support.converter.JsonMessageConverter"/>
</property>
</bean>
设置完成后,应该可以将列表对象序列化/反序列化为 JSON 并返回。