我正在设计一个新的Java Web应用程序的后端,正在考虑是否使用事件总线;具体来说是 Guava 的
大多数服务器端请求将是同步的:也就是说,用户正在请求数据,并且需要在几秒钟内得到响应。但是,还有很多可以异步处理的请求,在客户端上是“fire and forget”。只要它们最终被处理,客户端就不在乎花费 2 秒还是 2 小时。
对于这些异步请求,我计划让映射 URL 的 Servlet 将请求发布到队列中。然后,消费者将出队每个请求并将其路由到适当的处理程序。这就是
我想说我已经探索了使用 Apache Camel,我确实认为在这里 Camel 是正确的工具。不幸的是,由于问题超出了此问题的范围,我将不会使用它。因此,我开始构想类似 Camel 的解决方案,这就是我如何找到 Guava 的
我猜我正在寻找
EventBus
。大多数服务器端请求将是同步的:也就是说,用户正在请求数据,并且需要在几秒钟内得到响应。但是,还有很多可以异步处理的请求,在客户端上是“fire and forget”。只要它们最终被处理,客户端就不在乎花费 2 秒还是 2 小时。
对于这些异步请求,我计划让映射 URL 的 Servlet 将请求发布到队列中。然后,消费者将出队每个请求并将其路由到适当的处理程序。这就是
EventBus
是否适用的地方。将请求路由到正确的处理程序的业务逻辑非常复杂。通常情况下,Camel 路由将是完美的解决方案。在我的用例中,我想知道是否可以将一堆“处理器”(事件处理程序)连接到同一个事件总线上,然后让每个处理程序相互触发和接收事件,直到产生最终结果。我想说我已经探索了使用 Apache Camel,我确实认为在这里 Camel 是正确的工具。不幸的是,由于问题超出了此问题的范围,我将不会使用它。因此,我开始构想类似 Camel 的解决方案,这就是我如何找到 Guava 的
EventBus
。但它可能不是一个合适的替代品。我猜我正在寻找
Event Bus
模式解决的问题分类,然后我需要确定是否与我的用例相匹配。
Camel processors
内部修改Message
/Exchange
的方式一样。我仍然犹豫是使用它还是手动将处理器连接在一起。我感兴趣的是解耦,但EventBus
仍然不像是最好的(非Camel
)解决方案。我会给你打上绿色勾,并会向您汇报我的决定和结果。再次感谢! - IAmYourFaja