Java ESB vs服务
我是JavaEE新手,几天来一直在为一些基本的中间件概念而挣扎,我相信我可能刚刚在对“如何工作”的理解上取得了突破;这个问题的一部分是要求确认我的调查结果,另一部分是合法的问题;-) 请确认/澄清:我对服务总线/MOM(面向消息的中间件)的理解是,它们本质上旨在异步处理客户端请求。这与通常由某种服务实现的同步请求-响应周期相反。在Java中,这样的总线/MOM可能类似于ApacheCamel,而同步服务可能类似于EJB(3)。因此,如果客户机需要立即处理请求,Java ESB vs服务,java,ejb-3.0,soa,apache-camel,middleware,Java,Ejb 3.0,Soa,Apache Camel,Middleware,我是JavaEE新手,几天来一直在为一些基本的中间件概念而挣扎,我相信我可能刚刚在对“如何工作”的理解上取得了突破;这个问题的一部分是要求确认我的调查结果,另一部分是合法的问题;-) 请确认/澄清:我对服务总线/MOM(面向消息的中间件)的理解是,它们本质上旨在异步处理客户端请求。这与通常由某种服务实现的同步请求-响应周期相反。在Java中,这样的总线/MOM可能类似于ApacheCamel,而同步服务可能类似于EJB(3)。因此,如果客户机需要立即处理请求,HttpRequest可能会转到一个
HttpRequest
可能会转到一个web服务,然后该服务将请求转发到正确的EJB;EJB处理消息并将结果返回给服务,然后服务将HttpResponse
返回给客户端。同样地,如果客户端有一个不阻塞它们的请求,并且该请求只需要处理,那么web服务将它们的HttpRequest
转发到服务总线上的某个端点,并且该请求被视为一条消息,并由各种处理器(过滤器、转换器等)处理
因此,首先,如果我错误地指出ESB/MOM解决方案最适合处理异步请求,而EJB(同样,3.x)最适合实时响应同步请求,请纠正我的错误;或者确认我是正确的
在这种情况下,在我看来,大型应用程序需要两种类型的后端来处理同步(阻塞)和异步(非阻塞)客户端请求。因此,我的理论是让我的后端实现如下:
- 使用像JBoss或GlassFish这样成熟的应用服务器
- 在应用服务器的web容器中有两个war:
和WebServices.war
;分别代表后端“网关”和服务总线ESB.war
- 在应用服务器的业务容器中,有所有我的EJB
- 现在,
(网关)可以检测是将请求中继到ESB还是EJBWebService.war
- 何时使用ESB,何时使用MDB/EJB解决方案;及
- 我非常喜欢ApacheCamel的处理器API(EIP的实现);我是否可以使用MDB/EJB,但在每个EJB中只使用驼峰处理器(
,Filter
,等等)WireTap
我希望这有帮助 正如您所注意到的,中间件/集成的定义和术语有点混乱。让我澄清一下 A