Обогатитель контента WSO2

У меня есть простой сценарий, у меня есть экземпляр WSO2 ESB, и я построил последовательность для обработки сообщения, где одним из шагов этой последовательности является обогащение содержимого тела сообщения. Информация, которая должна быть добавлена ​​в расширенное тело, доступна через веб-службу REST, развернутую где-то еще на сервере приложений. Мне не удалось найти работающее решение с набором посредников по умолчанию (я знаю, что есть возможность написать свой собственный посредник). У самого посредника Enrich такой возможности нет. Я нашел подобное решение в книге от PacktPub, образец называется обогащением контента, но он использует базу данных () в качестве источника для будущего обогащения, и посредник Enrich там не используется. Есть ли какое-то решение для этого или я на неправильном пути?

Заранее спасибо.


person Thelvyn    schedule 26.03.2014    source источник


Ответы (1)


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

Если это так;

Что вы должны сделать, это,

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

Этот тип сценария называется цепочкой сервисов. Вы должны использовать подходящие посредники. на месте для достижения вашего окончательного требования.

Редактировать:
//Я хочу, чтобы в конце цепочки было то же самое сообщение//

1) Итак, сохраните исходное сообщение в посреднике свойств (с типом = OM)

2) Затем вызовите конечную точку REST, получите данные и извлеките необходимое значение.

3) Затем используйте посредник обогащения, чтобы обогатить ранее сохраненное сообщение.

4) Затем снова используйте медиатор обогащения, чтобы преобразовать это свойство в мыльное тело.

5) Отправьте это клиенту.

person Ratha    schedule 26.03.2014
comment
Спасибо за ответ. Я пробовал этот образец раньше, но не смог справиться со своим сценарием таким образом. Все примеры смены сервиса описывают немного другую ситуацию, они работают с разными сообщениями по цепочке, получают ответ от первого и делают новый запрос ко второму сервису в цепочке. Мне нужно что-то еще. Я хочу, чтобы в конце цепочки было то же самое сообщение, но дополненное некоторыми данными, которые я получу от веб-службы REST. Возможно, я не очень хорошо понял, как сохранить информацию из ответа и сохранить исходное сообщение в цепочке. - person Thelvyn; 27.03.2014
comment
Я отредактировал свой ответ выше о том, как выполнить ваше требование. - person Ratha; 28.03.2014
comment
Спасибо, с вашим советом я смог реализовать свой сценарий, но использование медиаторов обогащения требует гораздо большего знания XPATH (или XSLT), и я сделал обогащение с медиаторами пользовательских классов в Java. - person Thelvyn; 03.04.2014
comment
Кстати, не могли бы вы поделиться каким-нибудь сложным сценарием, реализованным в WSO2 ESB (примеры, распространяемые с помощью ESB, слишком просты)? - person Thelvyn; 03.04.2014