使用 Hazelcast 命名锁

该模块使用 Hazelcast 实现命名锁。它提供了两种实现,它们是分布式的并且依赖于 Hazelcast 4.x ISemaphores。

开箱即用的“hazelcast”(分布式)命名锁实现如下:

  • semaphore-hazelcastorg.eclipse.aether.named.hazelcast.HazelcastCPSemaphoreNamedLockFactory中实现,它使用 Hazelcast 支持的 com.hazelcast.cp.ISemaphore。此处使用完整的 Hazelcast 成员。
  • semaphore-hazelcast-clientorg.eclipse.aether.named.hazelcast.HazelcastClientCPSemaphoreNamedLockFactory中实现,使用 Hazelcast Client 支持的 com.hazelcast.cp.ISemaphore。此实现使用 Hazelcast 客户端,因此连接到一些现有的 Hazelcast 集群,并且它的存在是一个要求。

未解决的问题/注释

  • 插件的使用尚未经过测试。
  • 因为它使用ServiceLocator而不是依赖注入,所以熔炉-maven-plugin无法使用此实现。

Maven 解析器集成商的未决问题/注释

要在您的项目中使用此实现,取决于您的集成方式,您有以下选项: - 如果您使用 Sisu DI,那么您只需要在类路径上提供此模块(及其依赖项)即可完成。- 如果您使用 Guice,则需要预先添加此模块(及其依赖项),并显式绑定它们。- 如果您使用 ServiceLocator,请注意它已被弃用,您应该远离它。在这种情况下,最简单的方法是滚动您自己的“引导”类,该类与 ServiceLocator 所做的事情几乎相同,并将其扩展为也实例化这些组件。

安装/测试

  • 创建目录${maven.home}/lib/ext/hazelcast/
  • 通过在${maven.conf}/logging行之后添加load ${maven.home}/lib/ext/hazelcast/*.jar来修改${maven.home}/bin/m2.conf 。
  • 将以下依赖项从 Maven Central 复制到${maven.home}/lib/ext/hazelcast/
  • 可选择使用${maven.conf}/hazelcast.xml${maven.conf}/hazelcast-client.xml配置 Hazelcast 实例(有关可能性,请参阅 Hazelcast 文档,或者,请参阅此项目的测试资源作为启动器)。
  • 现在在您的项目上启动多线程 Maven 构建,并确保正在使用NamedSyncContextFactory 。