Корпоративная интеграция Scatter-Gather на нескольких серверах приложений

Я ищу способ агрегировать сообщения JMS, отправленные с нескольких серверов приложений, с балансировкой нагрузки через JMS. Проблема в основном в следующем:

В конце нашей регистрационной формы в http-сессии существует контейнер, и контейнер имеет два объекта одного типа. Каждый объект нужно обработать, затем нужно доставить контейнер. Обработка объекта требует больших ресурсов, поэтому обработка запрашивается (InOnly, асинхронно) и ставится в очередь в OpenMQ. Сообщение JMS потребляется одним из двух конкурирующих потребителей, которые в основном являются дублирующими серверами приложений, которые также обслуживают веб-запросы.

На данный момент у меня просто жестко запрограммирована задержка доставки контейнера, но с повышенным трафиком сбоев доставки предостаточно, так как объекты еще не закончили обработку. Я использую Apache Camel 2.6 и Spring Remoting, и верблюжий агрегатор был бы идеальным, за исключением того, что каждый сервер приложений должен иметь дублированный контекст верблюда, поэтому они будут конкурировать за совокупные компоненты.

Возможно, временная очередь и конечная точка для каждой агрегации, но я не уверен, как это сделать, особенно демонтаж. Как лучше всего обработать оба объекта, а затем доставить контейнер?


person Community    schedule 30.11.2011    source источник


Ответы (1)


Вы можете отправить сообщение в тему, когда каждый объект будет готов. Сообщение должно содержать идентификатор контекста и идентификатор объекта. Тогда у вас будет маршрут от темы. Когда сообщение получено, оно сохранит состояние в простой таблице базы данных и проверит, сохранено ли уже другое подтверждение. Если да, то он доставит контейнер.

person Christian Schneider    schedule 01.12.2011
comment
Да, хорошее предложение. Я бы предпочел не синхронизироваться с базой данных приложения. Он будет использовать его как рабочую очередь, где для этого есть OpenMQ. - person ; 02.12.2011