我正在寻找Java中的轻量级消息传递框架.我的任务是以SEDA的方式处理事件:我知道处理的某些阶段可以快速完成,而其他阶段则不能完成,并且希望将这些处理阶段分离.
假设我有组件A和B以及处理引擎(这个容器或其他任何东西)调用组件A,组件A又调用组件B.我不关心组件B的执行时间是否为2秒,但是我确实关心执行例如,组分A的时间低于50ms.因此,组件A向B提交消息似乎是最合理的,B将在所需的时间处理.
我知道不同的JMS实现和Apache ActiveMQ:它们对此非常重要.我搜索了一些轻量级消息(具有消息序列化和最简单的路由等真正的基本功能)无济于事.
在这个问题上你有什么值得推荐的吗?
您是否需要任何类型的持久性(例如,如果您的 JVM 在处理数以千计的消息之间死亡)并且您是否需要消息来遍历任何其他 JVM?
如果这一切都在单个 JVM 中,并且您无需担心 JVM 死机时的事务、恢复或消息丢失 - 那么正如 Chris 上面所说,Executors 很好。
ActiveMQ 非常轻量级;如果您愿意,您可以仅在没有持久性的情况下在单个 JVM 中使用它;然后,您可以在需要时启用事务/持久性/恢复/远程处理(使用多个 JVM)。但是,如果您不需要这些东西,那么它就有点矫枉过正了——只需使用 Executors。
顺便说一句,如果您不确定哪些步骤可能需要多个 JVM 的持久性/可靠性或负载平衡,另一种选择是完全隐藏中间件的使用,以便您可以在需要时在带有执行程序的内存 SEDA 队列和 JMS/ActiveMQ 之间切换到。
例如,某些步骤可能需要可靠且可恢复(因此需要某种持久性),而其他时候则不需要。
归档时间: |
|
查看次数: |
7166 次 |
最近记录: |