我参与了使用Spring Cloud和Apache Camel的服务的设计。今天,当一位同事问我们是否真的需要Apache Camel时,我很吃惊(也许提倡一个更好的术语)。从他的角度来看,我们谈论的大多数下游系统都是基于REST的,因此不需要集成框架。如果我的回忆是正确的,他还暗示微服务和集成框架是不兼容的。
我开始热情地建议Spring Cloud帮助解决部署/操作问题,而Integration框架解决集成问题并且它们具有正交要求。
以下是系统将用于通信的一些协议:
REST
SOAP
AMQP
Azure SDK
AWS SDK (S3, SimpleBD, etc.)
Dropbox SDK
Paypal SDK
Braintree SDK
Caching (Memcached, EhCache)
Async (VM, Direct-VM, SEDA, SEDA-VM)
Facebook
Twitter
FTP
SMTP
File IO
SOLR/Elesticsearch
Quartz
未知协议:当我们整合到客户环境中时,我们需要与他们的系统集成。通信协议尚不清楚。
Martin Fowler和James Lewis的以下声明似乎暗示ESB和微服务是不相容的:"我们无法提及Jim Webber关于ESB代表的声明" Egregious Spaghetti Box"。现在,您认为此声明在多大程度上适用于Apache Camel等集成框架?
更一般地说,我的同事有意义吗?这是否意味着集成模式在微服务中没有位置?
答案 0 :(得分:2)
Apache Camel实际上并不是一个ESB(unless you want it to be),而是一种以面向消息的方式连接“东西”的语言/框架。
如果您觉得可以使用简洁的语法和灵活的瑞士军刀来连接微服务中的“东西”,请确保使用Apache Camel。如果您希望以其他方式解决集成代码,请执行此操作。