此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Integration 6.3.1Spring中文文档

此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Integration 6.3.1Spring中文文档

可以分别根据授予或撤销的领导权限来启动和停止端点组。 这在群集场景中非常有用,其中共享资源只能由单个实例使用。 例如,轮询共享目录的文件入站通道适配器。 (请参阅读取文件)。Spring中文文档

为了参加领导者选举,并在当选领导者、撤销领导权或未能获得成为领导者的资源时收到通知,应用程序会在应用程序上下文中创建一个称为“领导者发起者”的组件。 通常,领导者发起方是 ,因此它在上下文开始时启动(可选),然后在领导层更改时发布通知。 您还可以通过将 设置为(从 5.0 版开始)来接收失败通知,以用于在发生故障时要执行特定操作的情况。 按照惯例,您应该提供接收回调的 a。 您还可以通过框架提供的对象撤销领导权。 您的代码还可以侦听实例(和 的超类)并做出相应的响应(例如,通过使用 )。 这些事件包含对对象的引用。 以下列表显示了接口的定义:SmartLifecyclepublishFailedEventstrueCandidateContexto.s.i.leader.event.AbstractLeaderEventOnGrantedEventOnRevokedEventSmartLifecycleRoleControllerContextContextSpring中文文档

public interface Context {

	boolean isLeader();

	void yield();

	String getRole();

}

从版本 5.0.6 开始,上下文提供了对应聘者角色的引用。Spring中文文档

Spring Integration 提供了基于抽象的 leader 发起程序的基本实现。 要使用它,您需要将实例创建为 Bean,如以下示例所示:LockRegistrySpring中文文档

@Bean
public LockRegistryLeaderInitiator leaderInitiator(LockRegistry locks) {
    return new LockRegistryLeaderInitiator(locks);
}

如果锁注册表实现正确,则最多只有一个领导者。 如果锁注册表还提供在锁过期或损坏时抛出异常(理想情况下)的锁,则无领导期间的持续时间可以尽可能短,以锁实现中的固有延迟为限。 默认情况下,该属性会添加一些额外的延迟,以防止在(更常见的)锁不完美的情况下出现 CPU 匮乏,并且只有在您尝试再次获取锁时才知道它们已过期。InterruptedExceptionbusyWaitMillisSpring中文文档

有关使用 Zookeeper 的领导选举和事件的更多信息,请参阅 Zookeeper 领导事件处理。 有关使用 Hazelcast 的领导选举和事件的更多信息,请参阅 Hazelcast 领导事件处理Spring中文文档