返回

Spring Integration 的Zookeeper 支持

发布时间:2022-12-22 21:17:43 301
# webkit# spring# 数据# 信息

Spring Integration 的Zookeeper 支持_spring

版本 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 元数据存储:

@Bean
public 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 中配置领导者选举的应用程序:

 

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

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

@Bean
public 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​

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线
下一篇
Spring Integration中零MQ 支持 2022-12-22 20:54:20