Что такое хороший шаблон проектирования для соединения отправителя и получателя? - PullRequest
1 голос
/ 07 марта 2012

Я пытаюсь реализовать логику для соединения отправителя и получателя для передачи файла, рукопожатие между отправителем и получателем.Основной рабочий процесс высокого уровня, который я себе представляю, это ...

Sender   : prep for transfer, create token, wait for receiver to connect

Receiver : access download URL using token, wait for sender to start sending

Sender   : confirm Receiver has connected / is waiting, send

Receiver : receive

* примечание : отправителю может быть только один получатель, то есть только1 получатель может «скачать» файл, который отправляет отправитель

Я использую Jetty Continuations для длинного опроса сервера, что облегчает обработку асинхронных событий, но я не уверен, какподходить к аспекту дизайна.Каков хороший шаблон проектирования для вышеуказанного рабочего процесса, * рукопожатие * между отправителем и получателем?

1 Ответ

2 голосов
/ 07 марта 2012

Моя стратегия перехода на использование JMS-очереди для этого класса проблем.Существует множество реализаций с множеством вариантов.Вы можете искать передачу файлов «Out of Band», в частности, то, что вы описываете: передача токена (сообщения) с сервера, который указывает на файл, который будет загружен клиентом.Кроме того, это соответствует вашему требованию загрузки 1 приемникаОчередь JMS может быть настроена таким образом, чтобы разрешить только одного клиента для каждого сообщения через блокировку транзакций.

Не знаю, действительно ли это отвечает на ваш вопрос, но это может быть место для начала.

Редактировать:

Если вы новичок в JMS, вам стоит начать с ActiveMQ:

Ссылка на главную страницу

Doc, ссылающийся на внешнюю передачу файла Возможно, вы захотите внедрить свое собственное "BlobMessage" или просто использовать обычное сообщение и обрабатывать URL-адрес, переданный через него.

Учебное пособие по Oracle JMS 1.1

Для JMS доступно множество ресурсов, потому что это такой старый стандарт.

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

...