В настоящее время у меня есть одно монолитное приложение, с помощью которого я создал много таймеров EJB программно, чтобы истечь когда-нибудь в будущем.Я использую Java EE 7 и WildFly 12, чтобы сделать это.Я настроил WildFLy для сохранения его в базе данных, которая затем сериализуется и сохраняется готовой для обработки в TimeOut, и все здесь работает нормально.Теперь я делю монолит на микросервисы и сталкиваюсь с проблемой миграции этих таймеров.
Есть ли способ сделать это чистым способом?Любые предложения приветствуются.
Во-первых, я попытался обновить таймеры в базе данных и заметил, что он не будет работать, поскольку объекты сериализуются с добавленными метаданными, которые содержат файл войны развертывания, к которому он принадлежит.
Во-вторых, я былподумав о создании единой партии для циклического прохождения каждого таймера и публикации сообщения, если таймер должен быть удален, чтобы новый микросервис получил это сообщение и создал таймер в своей собственной схеме с правильной информацией о развертывании.Однако мне не нравится это решение, так как оно очень грязное и включает в себя добавление большого количества операторов if для обслуживания различных типов таймеров.
ejb_timer_id = warFileName.warFileName.MyTimerEventHandler
expire_date = 2019-01-04 08: 55: 00,0000000 serialized_object = Pk9jb20ubWlkbGFuZGhyLnRyZW50LnRhbGVudC5jaGVja2luLnRpbWVycy5OZXh0U2NoZWR1bGVkQ2hlY2tJbkV4cGlyZWRUaW1lckV2ZW50GHMausCwvz8 + FGRlcGxveW1lbnQudHJlbnQud2FyPgRtYWluAAAAAj4YbmV4dFNjaA ==
1011 * для того, чтобы заставить его работать, мне нужно, чтобы успешно обновить ejb_timer_id от warFileName.warFileName.MyTimerEventHandler до newWarFileName.newWarFileName.MyTimerEventHandler и сериализованного объекта необходимо будет обновлениесодержать новые подробности deploymnet, например, от myWarFile до myNewWarFile