Как переместить таймеры EJC после перемещения обработчика в другой файл WAR - PullRequest
0 голосов
/ 04 января 2019

В настоящее время у меня есть одно монолитное приложение, с помощью которого я создал много таймеров 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

1 Ответ

0 голосов
/ 08 февраля 2019

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

...