如何解耦现有服务?

时间:2018-05-01 02:47:58

标签: java spring esb decoupling

我需要提出新功能,即新的maven模块/服务/域对象。该模块依赖于其他模块并调用其服务。我需要将该呼叫从新服务解耦到现有服务。这里的去耦意味着模块在编译或运行时不会彼此了解。 例如: - 不是直接调用任何其他服务,而是

  1. 把它放在频道上。另一个服务侦听它,一旦在通道上找到对象就处理它并在调用者等待的同一通道上返回输出 输出
  2. 频道可以是任何媒体,如对象/队列/网络等
  3. 我确信应该有很多方法可以将呼叫解耦到现有服务。我能想到两种方式: -

    微服务: - 因为这是一个非常小的功能(将来不需要扩展)使用相同的数据库。所以,我不相信这里

    ESB: - 不确定只是解耦现有的服务电话,ESB是好方法吗?

    Spring是否提供了解耦服务的方法?看起来Sprint事件已经关闭,事件发布和监听器得到通知。 但是春天的监听器不会返回输出。春天的其他任何事都可以帮到这里吗?

1 个答案:

答案 0 :(得分:0)

您是否要求删除类路径依赖项,或者您是否应该选择ESB,即微服务。后者听起来像是一个你在业务中应该讨论的问题,而不是SO问题。

如果你只是想删除地狱maven创建的maven依赖,你可以做的是创建一个项目,其中包含定义旧服务的接口。您的新服务将使用这些接口,而不是直接依赖您的旧服务。当然,你必须要有一些总体项目,作为其中的所有内容,或者你需要使用OSI容器或类似的东西。但是,如果没有他们了解您的旧服务,您将能够继续开发新服务。

关于您想要使用的架构类型,这是一个高度争议和固执己见,没有明确的答案。但我要说的是,我不认为避免使用大型类路径是实现微服务或ESB的一个重要原因,但这仅仅是我的观点。如果这是你唯一真正的理由,那么我建议不要这样做。