我正在设计一个新的Java Web应用程序的后端,并尝试决定是否使用事件总线;具体是
Guava EventBus。
大多数服务器端请求将是同步的:即,用户正在请求数据并在几秒钟内需要响应。然而,也有不少的请求可以是异步的,在客户端也是“火和忘记”。只要他们最终被处理,客户端可以小心,如果需要2秒进行处理或2小时。
对于这些异步请求,我计划让servlet在映射的URL上侦听将请求发布到队列。然后,消费者将出现每个请求并将其路由到适当的处理程序。这是EventBus可能或不会发挥作用的地方。将请求路由到正确的处理程序的业务逻辑非常复杂。通常骆驼路线将是完美的解决方案。在我的用例中,我想知道我是否可以将一堆“处理器”(事件处理程序)连接到同一个事件总线,然后让每一个触发和接收事件相互交互,直到最终结果为产生的。
我想说,我已经探索了使用Apache Camel,而且我确实认为Camel是这个工作的正确工具。可悲的是,由于这个问题范围之外的原因,我不会使用它。所以我开始想起了类似骆驼的解决方案,这就是我到达Guava的EventBus。但它可能不是一个合适的替代品。
我想我正在寻找事件总线模式解决的问题分类,然后我需要确定是否匹配我的用例在这里。