2016-08-12 2 views
1

У меня есть требование отправить файлы последовательно по мере их поступления. Например, если есть три бинарных файла F1, F2 и F2, и они идут в порядке F1, F2 и F3. Это должна быть доставка в той же последовательности, то есть F1, F2 и F3. Он работает в счастливом рабочем процессе.Последовательная доставка бинарной полезной нагрузки с использованием интеграции Apache Camel?

Но, когда доставка F1 не удалась из-за сбоя в сети, это прерывание последовательности.

Мои исследования So Far:

  1. Мы можем продолжать соединяться до устранения проблемы: Not A Good Design
  2. процесс Make синхронные и отправить успех или неудачу в исходной системе тогда, системный источник отправит следующую полезную нагрузку или ту же полезную нагрузку. Это экономическая эффективность и участие другой системы.

Также для информации - Как работает основной ток?

Исходная система Отправляет двоичные данные с использованием клиента REST в нашу службу отдыха и мы отправляем подключение к FTP-серверу и отправляем эту двоичную полезную нагрузку в требуемую папку.

Комментарий, если требуется дополнительная информация.

+1

если вы делаете этот процесс асинхронным. Как вы можете гарантировать, что F1 будет доставлен первым? –

+0

Извините, я хочу сказать, синхронизация. Я обновлю вопрос. –

+0

Для отправки сообщений вам потребуется определенный идентификатор. Как вы узнали, что F1 отправлен F1 для этой партии, а не тот, который был назначен 2 часа назад? Вам нужно будет идентифицировать сообщения, сохранить сообщения в некоторой временной очереди (activemq) и как только три последовательности совпадут, а затем отправьте на FTP-сервер. Если что-то ломается, держите их в очереди темп, пока не появится пропавший. –

ответ

0

У вас есть логически несовместимый набор функциональных требований. Вы хотите, чтобы заказ поддерживался, но также указывает, что «1. Мы можем продолжать повторять попытку, пока проблема не будет решена:« Не хороший дизайн ».

Жестко иметь оба. Кроме того, отправка в конечную точку REST по сути своей асинхронна, и порядок не следует предполагать, когда два сообщения отправляются в конечную точку REST.

Я предлагаю потребителю с одним потоком опроса, а в обработчике ошибок отправляется уведомление об ошибке.