Jms &引用;通常不鼓励使用ObjectMessage;,用什么来代替?

Jms &引用;通常不鼓励使用ObjectMessage;,用什么来代替?,jms,activemq,Jms,Activemq,ActiveMQ文档: 虽然通常不鼓励使用ObjectMessage,但是 引入生产者和消费者之间的类路径耦合, ActiveMQ支持它们作为JMS规范的一部分 由于没有太多的消息总线经验,我一直认为它们在概念上类似于soapweb服务,在soapweb服务中,您为消费者指定服务接口契约,然后消费者构造等价的类代理 我努力实现的目标是: 发布者以某种方式指示消息的模式 订阅者以某种方式知道消息的模式 ObjectMessage解决了这个问题,尽管考虑到注意到的类路径耦合,这不是最好的方式。据我所

ActiveMQ文档:

虽然通常不鼓励使用ObjectMessage,但是 引入生产者和消费者之间的类路径耦合, ActiveMQ支持它们作为JMS规范的一部分

由于没有太多的消息总线经验,我一直认为它们在概念上类似于soapweb服务,在soapweb服务中,您为消费者指定服务接口契约,然后消费者构造等价的类代理

我努力实现的目标是:

  • 发布者以某种方式指示消息的模式
  • 订阅者以某种方式知道消息的模式
  • ObjectMessage解决了这个问题,尽管考虑到注意到的类路径耦合,这不是最好的方式。据我所知,其他消息类型为使用者提供了有关预期消息格式的最低指导(例如,使用者必须假设MapMessage包含具有特定值类型的某些键)


    有没有其他合理的方法来实现这一点,或者这甚至不是我应该追求的东西?

    因为这个想法是为了让发布者/订阅者了解模式。第一步是使用JSON/protobuf为有效负载确定一个结构。(我个人不是XML的忠实粉丝)。然后我们以TextMessage/BytesMessage的形式传递数据

    而这个想法是为了让发布者/订阅者交流模式。实现这一目标的两种方法:

  • 订阅者通过publishér的javadoc或示例调用了解模式。(对于简单的用例听起来不错)
  • 有一个集中的配置来发布发布者和订阅服务器,以便从中获取。此配置可能位于提供配置的数据库/应用程序中。有效的实现将确保发布服务器/订阅服务器在进行修改时不会中断 此方法相对于对象消息方法的优点:

  • 有效负载没有紧密耦合(即jar升级/属性更改等)
  • 显著的性能改进——这里有一个例子,一个带有string和int的Java类比直接将int和string存储为字节要花费3.7倍的时间