Обработка пересмотра неудачных транзакций - PullRequest
0 голосов
/ 11 июня 2018

Я пытаюсь повторить неудачные транзакции.Для этого то, что мы сделали Один из моих EAR пытается запросить у третьей стороны, если это не удалось, он записывает все транзакции в файл (в CSV-файле запятая разделяла каждый запрос).Пример: сбой запроса на мыло 1, сбой запроса мыла 2,

Мой другой EAR выполняет планировщик и выполняет чтение всех транзакций.

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

Во время чтения мы помещаем все неудачные транзакции в JMS Очередь, и потребитель снова отправляет запрос третьей стороне для каждогозапрос.Успешная и неудачная транзакция Я должен записать в другой каталог, чтобы ошибочные транзакции можно было проверить вручную (для возврата).

Вопрос: 1).Мне было интересно, что, если мой сервер выходит из строя, и я не получил ответ от третьей стороны.Таким образом, начиная с ActiveMQ, мой объект транзакции уже потребляется из очереди, но при дальнейшей обработке он теряется.Можно ли вручную подтвердить ActiveMQ после получения ответа.Но я думаю, что это замедлило бы обработку моего запроса на большое количество запросов.

2) Что делать, если мне придется повторить 3 раза для каждого запроса.Итак, что у меня на уме, я обработал бы каждый файл для неудавшегося запроса, который я записал бы в другой файл в каталоге с именем RETRIED_ONCE .

Я должен пройти снова, если нет папки для RETRIED_TWICE для неудачной транзакции в RETRIED_ONCE.Я хотел бы создать и записать файл CSV в эту папку.Если какая-либо транзакция, которая повторяется в RETRIED_TWICE , попадет в папку с ошибками, и эти транзакции будут просмотрены вручную.

Каждый час мой планировщик сканировал эти три папки и соответственно записывал неудачную транзакцию.

Есть ли лучший способ, чем этот?

Или я должен создать две JMS очереди для RETRIED_ONCE и RETRIED_TWICE .

...