Class LeaderInitiator

java.lang.Object
org.springframework.integration.hazelcast.leader.LeaderInitiator
All Implemented Interfaces:
Aware, DisposableBean, ApplicationEventPublisherAware, Lifecycle, Phased, SmartLifecycle

public class LeaderInitiator extends Object implements SmartLifecycle, DisposableBean, ApplicationEventPublisherAware
Bootstrap leadership candidates with Hazelcast. Upon construction, start() must be invoked to register the candidate for leadership election.
Author:
Patrick Peralta, Gary Russell, Dave Syer, Artem Bilan, Mael Le Guével, Alexey Tsoy, Robert Höglund, Christian Tzolov
  • Constructor Details

    • LeaderInitiator

      public LeaderInitiator(com.hazelcast.core.HazelcastInstance client)
      Construct a LeaderInitiator with a default candidate.
      Parameters:
      client - Hazelcast client
    • LeaderInitiator

      public LeaderInitiator(com.hazelcast.core.HazelcastInstance client, Candidate candidate)
      Construct a LeaderInitiator.
      Parameters:
      client - Hazelcast client
      candidate - leadership election candidate
  • Method Details

    • setTaskExecutor

      public void setTaskExecutor(AsyncTaskExecutor taskExecutor)
      Set a AsyncTaskExecutor for running leadership daemon.
      Parameters:
      taskExecutor - the AsyncTaskExecutor to use.
      Since:
      6.2
    • setLeaderEventPublisher

      public void setLeaderEventPublisher(LeaderEventPublisher leaderEventPublisher)
      Parameters:
      leaderEventPublisher - the event publisher
    • setHeartBeatMillis

      public void setHeartBeatMillis(long heartBeatMillis)
      Time in milliseconds to wait in between attempts to re-acquire the lock, once it is held. The heartbeat time has to be less than the remote lock expiry period, if there is one, otherwise other nodes can steal the lock while we are sleeping here.
      Parameters:
      heartBeatMillis - the heart-beat timeout in milliseconds. Defaults to LockRegistryLeaderInitiator.DEFAULT_HEART_BEAT_TIME
      Since:
      1.0.1
    • setBusyWaitMillis

      public void setBusyWaitMillis(long busyWaitMillis)
      Time in milliseconds to wait in between attempts to acquire the lock, if it is not held. The longer this is, the longer the system can be leaderless, if the leader dies. If a leader dies without releasing its lock, the system might still have to wait for the old lock to expire, but after that it should not have to wait longer than the busy wait time to get a new leader.
      Parameters:
      busyWaitMillis - the busy-wait timeout in milliseconds Defaults to LockRegistryLeaderInitiator.DEFAULT_BUSY_WAIT_TIME
      Since:
      1.0.1
    • setApplicationEventPublisher

      public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher)
      Specified by:
      setApplicationEventPublisher in interface ApplicationEventPublisherAware
    • setAutoStartup

      public void setAutoStartup(boolean autoStartup)
    • isAutoStartup

      public boolean isAutoStartup()
      Specified by:
      isAutoStartup in interface SmartLifecycle
    • setPhase

      public void setPhase(int phase)
    • getPhase

      public int getPhase()
      Specified by:
      getPhase in interface Phased
      Specified by:
      getPhase in interface SmartLifecycle
    • getContext

      public Context getContext()
      The context of the initiator or null if not running.
      Returns:
      the context (or null if not running)
    • start

      public void start()
      Start the registration of the candidate for leader election.
      Specified by:
      start in interface Lifecycle
    • stop

      public void stop(Runnable callback)
      Specified by:
      stop in interface SmartLifecycle
    • stop

      public void stop()
      Stop the registration of the candidate for leader election. If the candidate is currently leader, its leadership will be revoked.
      Specified by:
      stop in interface Lifecycle
    • isRunning

      public boolean isRunning()
      true if leadership election for this candidate is running.
      Specified by:
      isRunning in interface Lifecycle
      Returns:
      true if leadership election for this candidate is running
    • destroy

      public void destroy()
      Specified by:
      destroy in interface DisposableBean