Масштабируемый планировщик пружин для выборки mongodb - PullRequest
1 голос
/ 16 февраля 2020

У меня есть коллекция mongodb с именем A. В этой коллекции есть поле даты и времени с именем field1. В моем сценарии я должен собрать записи, у которых истекли дата и время на основе field1.

Я думал о написании Spring-планировщика Job, который запускается каждую минуту для извлечения записей с датой и временем с истекшим временем из mongodb, но когда я начал писать, я не смог сделать Spring-планировщик настолько масштабируемым.

В планировщике преобразовать запись в String и сделать сообщение pu sh в Kafka topi c. В моем случае Spring Scheduler работает на 4 экземплярах и pu sh дублирует сообщения для Kafka topi c.

Вопрос в весеннем планировщике, как я могу остановить дубликаты сообщений в Kafka topi c или как создать масштабируемый планировщик без дубликатов сообщений?

Какая-либо основанная на событиях инфраструктура для поддержки моего сценария? Означает, что по истечении срока записи она должна немедленно уведомить систему java, ie. Подобно TailableCursorlisteners весной слушает ограниченный сбор.

1 Ответ

0 голосов
/ 17 февраля 2020

Вы можете использовать библиотеку shedlock, которая обеспечит выполнение только одного задания во всех экземплярах. Вот учебник для получения дополнительной информации:

https://www.baeldung.com/shedlock-spring

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...