gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:16:57 24 4
gpt4 key购买 nike

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

假设我有组件 A 和 B,处理引擎(可以是这个容器或其他任何东西)调用组件 A,组件 A 又调用组件 B。我不关心组件 B 的执行时间是否为 2 秒,但我关心例如,注意组件 A 的执行时间是否低于 50 毫秒。因此,组件 A 向 B 提交消息,B 将在所需时间处理该消息似乎是最合理的。

我知道不同的 JMS 实现和 Apache ActiveMQ:它们对于这个来说太重量级了。我搜索了一些轻量级消息传递(具有非常基本的功能,例如消息序列化和最简单的路由)但无济于事。

您对本期有什么建议吗?

最佳答案

您是否需要任何类型的持久性(例如,如果您的 JVM 在处理数千条消息之间死机)并且您是否需要将消息遍历到任何其他 JVM?

如果它全部在单个 JVM 中,并且您无需担心 JVM 死机时的事务、恢复或消息丢失 - 那么正如 Chris 上面所说,Executors 很好。

ActiveMQ 非常轻量级;如果你愿意,你可以只在一个没有持久性的 JVM 中使用它;然后,您可以在需要时启用事务/持久性/恢复/远程处理(使用多个 JVM)。但是,如果您不需要这些东西,那就太过分了——只需使用 Executors。

顺便提一句,如果您不确定哪些步骤可能需要持久性/可靠性或对多个 JVM 进行负载平衡,那么另一种选择是 hide the use of middleware completely因此您可以在需要时在内存中的 SEDA 队列与执行程序之间切换到 JMS/ActiveMQ。

例如可能有些步骤需要可靠且可恢复(因此需要某种持久性),而其他时候则不需要。

关于java - Java 中的轻量级消息传递(异步调用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/211480/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com