Spring Integration 的Zookeeper 支持
版本 4.2 在 4.2 版中为框架添加了 Zookeeper 支持,其中包括:
- 元数据存储
- 锁定注册表
- 领导力事件处理
您需要将此依赖项包含在项目中:
动物园管理员元数据存储
您可以在需要的地方使用任何位置,例如持久文件列表筛选器。 有关详细信息,请参阅元数据存储。 以下示例使用 XML 配置 Zookeeper 元数据存储:ZookeeperMetadataStore
MetadataStore
以下示例显示了如何使用 Java 配置 Zookeeper 元数据存储:
动物园管理员锁注册表
可以在需要的地方使用,例如在具有共享 .ZookeeperLockRegistry
LockRegistry
MessageStore
A 用于根据键“查找”锁(聚合器使用 )。 默认情况下,锁在 zookeeper 中维护在以下路径下:。 可以通过提供 的实现来自定义路径,如以下示例所示:LockRegistry
correlationId
ZookeeperLockRegistry
/SpringIntegration-LockRegistry/
ZookeeperLockRegistry.KeyToPathStrategy
如果策略从 返回,则不需要收获未使用的锁。 对于无界策略(例如默认策略),您需要定期调用以从内存中删除旧的未使用锁。true
isBounded
expireUnusedOlderThan(long age)
字符串版本为5.5.6,支持通过自动清理ZkLock的缓存。 有关更多信息,请参阅其 JavaDocs。ZookeeperLockRegistry
ZookeeperLockRegistry.locks
ZookeeperLockRegistry.setCacheCapacity()
动物园管理员领导事件处理
以下示例使用 XML 在 Zookeeper 中配置领导者选举的应用程序:
client
是对豆子的引用。 A 可用。 当选领导者后,将发布该角色的 。 将启动该角色中的任何终结点。 撤销领导权时,将发布角色的 。 该角色中的任何终结点都将停止。 有关更多信息,请参阅终端节点角色。CuratorFramework
CuratorFrameworkFactoryBean
OnGrantedEvent
cluster
OnRevokedEvent
cluster
您可以使用 Java 配置创建领导者发起人的实例,如以下示例所示:
从版本 5.3 开始,在 上公开了一个选项,用于对外部提供的实例进行更多配置控制。 只需提供 or 选项之一,但不能同时提供两个选项;这些选项在内部创建一个具有 for 选项的实例。candidate
LeaderInitiatorFactoryBean
Candidate
candidate
role
role
DefaultCandidate
UUID
id