微服务共享对象

时间:2017-09-07 09:28:30

标签: java shared-libraries messaging microservices dry

目前,我们正在构建一个面向微服务的应用程序。

我们面临的问题是如何在保持服务独立的同时在服务之间发送和接收对象。

问题: 假设我们有一个EventService和一个NotificationService。 EventService生成一个Event,将其序列化(json / java?)并在ActiveMQ主题上发布序列化对象。 正在侦听该特定主题的NotificationService接收序列化对象并且必须对其进行反序列化,因此需要知道事件类。

解决两个服务之间共享Event-Class的问题有什么好办法? 我应该介绍一个只包含Event-Class的新项目吗?我在这里看到的问题是,这可能导致两种情况:

  1. 共享项目变得臃肿,并且将包含比每个服务更多的类,包括它将需要的。
  2. 对于每两个共享某种类型对象的服务,我会有一个额外的项目,这会导致越来越多的服务带来巨大的开销。

1 个答案:

答案 0 :(得分:0)

遵循以下经验法则:

对于企业应用程序和复杂对象,创建第三个项目(API项目),然后将其作为依赖项在服务之间共享。

对于简单自描述对象,请在每项服务中使用相同对象的“副本”;请注意,此功能非常强大,因为POJO不必相同;

我刚刚共享了示例代码here