Разброс корпоративных интеграций между несколькими серверами приложений - PullRequest
0 голосов
/ 30 ноября 2011

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

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

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

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

1 Ответ

0 голосов
/ 01 декабря 2011

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

...