一个 osgi 模块中的多个 camelcontexts - 需要注意什么?

Multiple camelcontexts in one osgi module - what to be careful about?

该应用程序有多个 camel 上下文,每个上下文都做自己的事情,因此不需要相互通信。它们在同一个模块中,因为它们共享一些 类.

在单个 osgi 模块中有多个上下文的情况下,是否有任何需要注意的问题?

在这种情况下,建议和最佳做法是什么?

这是相当主观的。恕我直言:要考虑的两件大事是过程控制和升级影响。请记住——在捆绑包升级期间,所有上下文都将停止然后重新启动。

您仍然可以在 Camel 上下文和路由级别进行细粒度过程控制(启动、停止、暂停、恢复),而无需依赖 bundle start |停止。

如果你想要细粒度升级能力,你可以把Java 类放在他们自己的包里,导出包。然后将 Camel 上下文放入它们自己的包中,并从共享包中导入 Java 类。然后,您可以单独升级 Camel 上下文 w/o 必须一次升级所有上下文(并强制它们全部停止)。

一条建议:无状态 beans/processors/aggregators.

关于您的 body 处理的所有状态相关信息必须存在于 Exchange headers/properties。

static final 常量很好。
配置只读属性也很好。