Публикация / подписка на большие файлы в качестве полезных сообщений - PullRequest
0 голосов
/ 01 сентября 2010

У нас есть система, которая обрабатывает много файлов на постоянной основе.Грубо говоря, около 3 миллионов файлов в день, размер которых может варьироваться от нескольких килобайт до 50 МБ.Эти файлы проходят несколько различных этапов обработки, начиная с момента их получения и заканчивая их потреблением, в зависимости от выбранного пути.Из-за содержимого и формата этих файлов они НЕ могут быть разбиты на более мелкие куски.

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

Большинство традиционных решений для пабов / субподразделений содержат данные в фактической полезной нагрузке, но большие потенциальные размеры файлов превышают пределы многих платформ обмена сообщениями.Кроме того, у нас есть несколько платформ: файлы проходят через уровни Linux и Windows в зависимости от их пути.

Есть ли у кого-нибудь какие-либо рекомендации по проектированию и / или реализации с учетом следующих целей?
1.Мультиплатформенность как для пабов, так и для подпрограмм (Linux и Windows)
2. Поддержка постоянного хранения / хранения и пересылки
3. Может обрабатывать большие полезные нагрузки событий и соответствующим образом очищаться после обслуживания всех подписчиков
4.Маршрутизация / рабочий процесс выполняется через конфигурацию
5. Подписчики могут подписаться на отфильтрованный набор опубликованных событий на основе изменяющихся критериев (например, только дать мне файлы определенного типа)

Я сделал кучууглубившись в ряд реализаций сервисной шины и MQ, но не смог достаточно развить подход проектирования, чтобы правильно оценить, какие инструменты наиболее целесообразны.Спасибо за любой вклад.

Ответы [ 2 ]

0 голосов
/ 23 октября 2012

Возможно, вы захотите заглянуть в ActiveMQ, если ваши клиенты являются внутренними клиентами. ActiveMQ поддерживает до 2 ГБ данных (я думаю), а также поддерживает сообщения BLOB-объектов. Это гарантирует доставку и обработку (с транзакциями).

Надеюсь, это поможет.

0 голосов
/ 01 сентября 2010

A1. Я разработал подобную систему на моей предыдущей работе. Мы не передали полезную нагрузку в несколько МБ внутри сообщения, вместо этого мы сохранили ее на файловом сервере и передали только имя файла UNC (сообщение было Java RMI, но почти все будет работать).

A2. Я недавно начал использовать Windows Communication Foundation. К счастью для меня, я поддерживаю только Windows, и мне не нужны такие большие сообщения. Однако в документации говорится, что протокол не зависит от платформы, и есть возможность передавать огромные порции данных с помощью функции потоковой передачи сообщений .

В обоих случаях, я думаю, вам придется выполнять требования № 4 и № 5 в своем собственном коде.

...