如何让 Runnable 知道 Hazelcast 中的一些本地应用程序 bean?

How to make Runnable aware of some local application bean in Hazelcast?

假设我有一个嵌入式 hazelcast 实例集群。在每个节点的运行时,我有一些 bean 的实例,它保持一些状态(比方说 - 一些特定于应用程序的配置参数)。我可以保证这个状态在整个应用程序生命周期内在每个节点上都是恒定的、不可变的和相同的。

现在,我需要在通过 Hazelcast 的 IExecutorService 执行的 Runnable 中使用这个 bean。我正在寻找的是类似于 HazelcastInstanceAware 接口的东西,但对于我的 bean - 一些合同将从节点获取我的 bean instanse,应该执行 Runnable,并在执行之前将其传递给 Runnable。

我不可能也不需要在集群上序列化这个 bean(我认为没有理由这样做,因为我在每个节点上都有完全相同的 bean 状态)。我现在不使用也不打算使用任何依赖框架,所以 Spring 不是一个选项(我不想让依赖注入框架只注入一个 bean)。

我有什么选择吗?

创建 HazelcastInstance 时,您可以配置一个 com.hazelcast.core.ManagedContext 实例 (com.hazelcast.config.Config#setManagedContext),它将根据自定义规则(如接口实现或类似规则)注入您自己的实例。