Spring Integration 的Zookeeper 支持

版本 4.2 在 4.2 版中为框架添加了Zookeeper支持,其中包括:

元数据存储锁定注册表领导力事件处理

您需要将此依赖项包含在项目中:

<dependency> <groupId>org.springframework.integration</groupId> <artifactId>spring-integration-zookeeper</artifactId> <version>6.0.0</version></dependency>动物园管理员元数据存储

您可以在需要的地方使用任何位置,例如持久文件列表筛选器。 有关详细信息,请参阅元数据存储。 以下示例使用 XML 配置 Zookeeper 元数据存储:??ZookeeperMetadataStore????MetadataStore??

<bean id=”client” class=”org.springframework.integration.zookeeper.config.CuratorFrameworkFactoryBean”> <constructor-arg value=”${connect.string}” /></bean><bean id=”meta” class=”org.springframework.integration.zookeeper.metadata.ZookeeperMetadataStore”> <constructor-arg ref=”client” /></bean>

以下示例显示了如何使用 Java 配置 Zookeeper 元数据存储:

@Beanpublic MetadataStore zkStore(CuratorFramework client) { return new ZookeeperMetadataStore(client);}动物园管理员锁注册表

可以在需要的地方使用,例如在具有共享 .??ZookeeperLockRegistry????LockRegistry????MessageStore??

A 用于根据键“查找”锁(聚合器使用 )。 默认情况下,锁在 zookeeper 中维护在以下路径下:。 可以通过提供 的实现来自定义路径,如以下示例所示:??LockRegistry????correlationId????ZookeeperLockRegistry????/SpringIntegration-LockRegistry/????ZookeeperLockRegistry.KeyToPathStrategy??

public interface KeyToPathStrategy { String pathFor(String key); boolean bounded();}

如果策略从 返回,则不需要收获未使用的锁。 对于无界策略(例如默认策略),您需要定期调用以从内存中删除旧的未使用锁。??true????isBounded????expireUnusedOlderThan(long age)??

字符串版本为5.5.6,支持通过自动清理ZkLock的缓存。 有关更多信息,请参阅其 JavaDocs。??ZookeeperLockRegistry????ZookeeperLockRegistry.locks????ZookeeperLockRegistry.setCacheCapacity()??

动物园管理员领导事件处理

以下示例使用 XML 在 Zookeeper 中配置领导者选举的应用程序:

<int-zk:leader-listener client=”client” path=”/siNamespace” role=”cluster” />

??client??是对豆子的引用。 A 可用。 当选领导者后,将发布该角色的 。 将启动该角色中的任何终结点。 撤销领导权时,将发布角色的 。 该角色中的任何终结点都将停止。 有关更多信息,请参阅终端节点角色。??CuratorFramework????CuratorFrameworkFactoryBean????OnGrantedEvent????cluster????OnRevokedEvent????cluster??

您可以使用 Java 配置创建领导者发起人的实例,如以下示例所示:

@Beanpublic LeaderInitiatorFactoryBean leaderInitiator(CuratorFramework client) { return new LeaderInitiatorFactoryBean() .setClient(client) .setPath(“/siTest/”) .setRole(“cluster”);}

从版本 5.3 开始,在 上公开了一个选项,用于对外部提供的实例进行更多配置控制。 只需提供 or 选项之一,但不能同时提供两个选项;这些选项在内部创建一个具有 for 选项的实例。??candidate????LeaderInitiatorFactoryBean????Candidate????candidate????role????role????DefaultCandidate????UUID????id??

接受自己的失败面,是一种成熟,更是一种睿智;

Spring Integration 的Zookeeper 支持

相关文章:

你感兴趣的文章:

标签云: