Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的轻量级消息传递(异步调用)_Java_Messaging - Fatal编程技术网

Java中的轻量级消息传递(异步调用)

Java中的轻量级消息传递(异步调用),java,messaging,Java,Messaging,我正在寻找Java中的轻量级消息传递框架。我的任务是以SEDA的方式处理事件:我知道处理的某些阶段可以很快完成,而其他阶段则不能,我希望将这些处理阶段解耦 假设我有组件A和B,处理引擎(无论是这个容器还是其他)调用组件A,组件A反过来调用组件B。我不关心组件B的执行时间是否为2秒,但我关心组件A的执行时间是否低于50毫秒,例如。因此,组件A向B提交消息似乎是最合理的,B将在所需的时间处理该消息 我知道不同的JMS实现和ApacheActiveMQ:它们太重了。我搜索了一些轻量级消息(具有消息序列

我正在寻找Java中的轻量级消息传递框架。我的任务是以SEDA的方式处理事件:我知道处理的某些阶段可以很快完成,而其他阶段则不能,我希望将这些处理阶段解耦

假设我有组件A和B,处理引擎(无论是这个容器还是其他)调用组件A,组件A反过来调用组件B。我不关心组件B的执行时间是否为2秒,但我关心组件A的执行时间是否低于50毫秒,例如。因此,组件A向B提交消息似乎是最合理的,B将在所需的时间处理该消息

我知道不同的JMS实现和ApacheActiveMQ:它们太重了。我搜索了一些轻量级消息(具有消息序列化和最简单路由等真正基本的功能),但毫无结果


在这个问题上你有什么建议吗?

真的很轻吗?:-)因此,您设置了一个执行器(在您的描述中是B),而A只是将任务提交给执行器。

您是否需要任何类型的持久性(例如,如果您的JVM在处理数千条消息的过程中死亡),以及是否需要将消息遍历到任何其他JVM

如果它都在一个JVM中,并且如果JVM死亡,您不需要担心事务、恢复或消息丢失,那么正如Chris上面所说,执行者是可以的

ActiveMQ相当轻量级;如果愿意,您可以在单个JVM中使用它,而不需要持久性;然后,您可以在需要时启用事务/持久性/恢复/远程处理(使用多个JVM)。但如果你不需要这些东西,那就太过分了——只需要使用执行者

顺便提一句,如果您不确定哪些步骤可能需要对多个JVM进行持久性/可靠性或负载平衡,那么另一个选项是,在需要时,可以在内存中SEDA队列之间切换,执行器为JMS/ActiveMQ


e、 g.可能有些步骤需要可靠且可恢复(因此需要某种持久性),而有些时候则不需要。

我认为Apache Camel满足了您的所有需求。它在JVM中工作,支持SEDA样式()和simpe路由。可以单独使用,也可以与spring一起使用,与JMS提供程序或其他适配器一起使用。

很抱歉恢复了一个旧线程,但它可能有助于其他人阅读它。。。我认为它是轻量级消息传递框架的一个很好的候选者


更新:但是我不确定它是否支持重新交付延迟(死信队列问题)。我会发现这甚至对轻量级提供者也是有用的。但是我想,通过MessageSelector查询和消息属性的组合,这是可能的。

要获得其他人的帮助,请阅读此线程:
最轻的消息传递框架之一是。 MBassador是一个非常轻量级的消息(事件)总线实现,遵循发布-订阅模式。它的设计目的是易于使用,旨在功能丰富和可扩展,同时保持资源效率和性能。
MBassador高性能的核心是一种专门的数据结构,它将锁争用降至最低,从而将并发访问的性能降低降至最低。
功能:通过注释的声明式侦听器定义、同步和/或异步事件传递、弱引用、消息过滤