Spring XD — гарантии доставки событий

Когда я создаю поток, состоящий из нескольких модулей, предоставляются ли какие-либо гарантии доставки события каждому модулю. Есть ли возможность повтора событий?

Что делать, если процессорному модулю требуется много времени для обработки одного события, но происходит сбой в середине обработки. Что происходит с этим событием, когда модуль перезапускается в контейнере?


person user3847658    schedule 02.12.2014    source источник


Ответы (1)


См. документацию по настройке шины сообщений и конкретно Error Handling (Message Delivery Failures).

Конфигурация повторных попыток может быть изменена на уровне шины или отдельного модуля/потока.

person Gary Russell    schedule 02.12.2014
comment
Спасибо Гэри. Я ссылался на этот документ. Но я не был уверен, что происходит в следующих двух сценариях. я. Случай отсутствия ошибки: всегда ли события доставляются только один раз или существует вероятность того, что они будут доставлены более одного раза? II. Сбой модуля: когда событие исключено из очереди из шины сообщений, но процесс завершается со сбоем после удаления из очереди и во время обработки. В этом случае событие проиграно? - person user3847658; 03.12.2014
comment
Предполагая перевозку кроликов; я. Существует небольшая (но ненулевая) вероятность повторной доставки - если сеть выйдет из строя после доставки, но до отправки подтверждения брокеру. Сообщение будет повторно поставлено в очередь и доставлено повторно; вы можете обнаружить повторную доставку с помощью заголовков сообщений, но вам нужна логика, чтобы определить, была ли повторная доставка успешно обработана ранее. При использовании прямой привязки поведение отличается тем, что исключение будет передано предыдущему модулю. II. Нет, опять же при условии кролика, сообщение будет повторно поставлено в очередь, поскольку оно не было подтверждено. - person Gary Russell; 03.12.2014