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, Emil Palm
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected classImplementation of leadership context backed by Hazelcast.protected classCallable that manages the acquisition of Hazelcast locks for leadership election. -
Field Summary
Fields inherited from interface org.springframework.context.SmartLifecycle
DEFAULT_PHASE -
Constructor Summary
ConstructorsConstructorDescriptionLeaderInitiator(com.hazelcast.core.HazelcastInstance client) Construct aLeaderInitiatorwith a default candidate.LeaderInitiator(com.hazelcast.core.HazelcastInstance client, Candidate candidate) Construct aLeaderInitiator. -
Method Summary
Modifier and TypeMethodDescriptionvoiddestroy()The context of the initiator or null if not running.intgetPhase()booleanbooleantrueif leadership election for thiscandidateis running.voidsetApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) voidsetAutoStartup(boolean autoStartup) voidsetBusyWaitMillis(long busyWaitMillis) Time in milliseconds to wait in between attempts to acquire the lock, if it is not held.voidsetHeartBeatMillis(long heartBeatMillis) Time in milliseconds to wait in between attempts to re-acquire the lock, once it is held.voidsetLeaderEventPublisher(LeaderEventPublisher leaderEventPublisher) Set theLeaderEventPublisher.voidsetPhase(int phase) voidsetTaskExecutor(AsyncTaskExecutor taskExecutor) Set aAsyncTaskExecutorfor running leadership daemon.voidstart()Start the registration of thecandidatefor leader election.voidstop()Stop the registration of thecandidatefor leader election.void
-
Constructor Details
-
LeaderInitiator
public LeaderInitiator(com.hazelcast.core.HazelcastInstance client) Construct aLeaderInitiatorwith a default candidate.- Parameters:
client- Hazelcast client
-
LeaderInitiator
Construct aLeaderInitiator.- Parameters:
client- Hazelcast clientcandidate- leadership election candidate
-
-
Method Details
-
setTaskExecutor
Set aAsyncTaskExecutorfor running leadership daemon.- Parameters:
taskExecutor- theAsyncTaskExecutorto use.- Since:
- 6.2
-
setLeaderEventPublisher
Set theLeaderEventPublisher.- 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 toLockRegistryLeaderInitiator.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 toLockRegistryLeaderInitiator.DEFAULT_BUSY_WAIT_TIME- Since:
- 1.0.1
-
setApplicationEventPublisher
- Specified by:
setApplicationEventPublisherin interfaceApplicationEventPublisherAware
-
setAutoStartup
public void setAutoStartup(boolean autoStartup) -
isAutoStartup
public boolean isAutoStartup()- Specified by:
isAutoStartupin interfaceSmartLifecycle
-
setPhase
public void setPhase(int phase) -
getPhase
public int getPhase()- Specified by:
getPhasein interfacePhased- Specified by:
getPhasein interfaceSmartLifecycle
-
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 thecandidatefor leader election. -
stop
- Specified by:
stopin interfaceSmartLifecycle
-
stop
public void stop()Stop the registration of thecandidatefor leader election. If the candidate is currently leader, its leadership will be revoked. -
isRunning
public boolean isRunning()trueif leadership election for thiscandidateis running. -
destroy
public void destroy()- Specified by:
destroyin interfaceDisposableBean
-