【问题标题】: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 并返回。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-10
        相关资源
        最近更新 更多