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