Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 微服务之间基于消息的通信_Java_Activemq_Publish Subscribe_Microservices - Fatal编程技术网

Java 微服务之间基于消息的通信

Java 微服务之间基于消息的通信,java,activemq,publish-subscribe,microservices,Java,Activemq,Publish Subscribe,Microservices,我想构建一些使用消息代理发送和接收消息的微服务:ActiveMQ。现在我正在探索消息类型的选项(即String,byte[],对象类型): 以XML/JSON格式发布消息,并在收到消息后对其进行解析 以XML/JSON格式发布消息,使用模式将其转换为对象 创建域对象并添加到microservices依赖项以进行数据交换 这是我已经看过的3个选项,我倾向于选项1,原因如下: 当需要添加新字段时,只有需要此字段的微服务需要更改 可以在不中断现有通信的情况下部署不同版本的微服务 微服务保持解耦 然而,

我想构建一些使用消息代理发送和接收消息的微服务:ActiveMQ。现在我正在探索消息类型的选项(即
String
byte[]
,对象类型):

  • XML/JSON格式发布消息,并在收到消息后对其进行解析
  • XML/JSON格式发布消息,使用模式将其转换为对象
  • 创建域对象并添加到microservices依赖项以进行数据交换
  • 这是我已经看过的3个选项,我倾向于选项1,原因如下:

  • 当需要添加新字段时,只有需要此字段的微服务需要更改
  • 可以在不中断现有通信的情况下部署不同版本的微服务
  • 微服务保持解耦
  • 然而,这就提出了解析和提取数据的问题,这很容易出错


    我想知道是否有其他人做过类似的设计,可以分享他们的经验并提出解决方案。另外,如果有更好的方法使用消息传递和队列实现微服务之间的通信。

    这是我通常采用的方法:对于每种消息类型,一个类负责对消息进行编码(生成JSON/XML/whatnot)、验证和解析。类进入一个库,然后在发送消息的服务和接收消息的服务上使用该库