Я построил этот пример POC, где я хотел бы запустить адаптер для входящего канала Spring JDBC при выборе лидера.Я вижу, что когда я добавляю код, который отправляет сообщение шины управления для запуска адаптера входящего канала jdbc, он немедленно отменяет лидерство, поэтому работает в состоянии, когда у меня нет активного лидера.Если я закомментирую код, отправляющий сообщение на управляющую шину, у меня всегда будет один лидер, работающий в кластере.
Вот полный код POC
Poc выбора лидера
Это то, что я делаю в своем пользовательском объекте-кандидате
@Override
public void onGranted(Context context) {
super.onGranted(context);
System.out.println("*** Leadership granted ***");
System.out.println("STARTING JDBC POLLER");
Message<String> startMsg = MessageBuilder.withPayload("@jdbcPoller.start()").build();
systemMessageChannel.send(startMsg);
System.out.println("STARTUP MESSAGE SENT");
}
@Override
public void onRevoked(Context context) {
System.out.println("*** Leadership revoked ***");
System.out.println("STOPPING JDBC POLLER");
Message<String> stringMessage = MessageBuilder.withPayload("@jdbcPoller.stop()").build();
systemMessageChannel.send(stringMessage);
System.out.println("SHUTDOWN MESSAGE SENT");
super.onRevoked(context);
}
Может кто-нибудь сказать мне, что не так с этим кодом?