Добро пожаловать в Stackoverflow! Я не слышал о Citrus Framework до того, как столкнулся с этим вопросом, но я немного знаю о Camel и постараюсь помочь вам с персонализированным Camel 101, чтобы помочь вам.
Перво-наперво
- A
CamelContext
походит на среду выполнения для интегрированной платформы Apache Camel. Думайте об этом как о чем-то вроде Spring ApplicationContext
. Все, что вы создаете с помощью Camel, живет в контексте. - Верблюд Маршрут - это конвейер обработки. Он принимает входные данные от чего-либо (
http
, jms
, file
... почти все под солнцем ), применяет к нему ноль или более шагов обработки и производит вывод чего-либо (console
, disk
, http
, .. вы называете это). Если мы рассмотрим простой маршрут, он может иметь два Endpoints
. Конечная точка Consumer
, которая потребляет Messages
, один или несколько Processor
компонентов, которые проверяют и обрабатывают входящие сообщения, и конечная точка Producer
, которая отправляет окончательные сообщения куда-либо (как в хранилище на диск, печатает на тестовом терминале, сообщение HTTP). на сервер ...)
В вашем случае, насколько я понимаю, вам нужен Route
, который может получить сообщение от Citrus Framework и сохранить его на диске, чтобы ваша системаПод тестом может обработать этот файл. Чтобы интерпретировать этот вариант использования в качестве определения маршрута, в XML DSL Camel.
<camelContext id="inputCamelContext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://camel.apache.org/schema/spring"
xsi:schemaLocation="
http://camel.apache.org/schema/spring
http://camel.apache.org/schema/spring/camel-spring.xsd">
<route id="inputRoute">
<from uri="direct:citrusConsumer" />
<to uri="file://C:/HL7/source/?fileName=test.hl7" />
</route>
<camelContext/>
direct:
URI представляет синхронную Consumer
конечную точку [Документы по direct
компоненту] . Этот пример маршрута состоит в том, чтобы взять любое входное сообщение, поступающее к потребителю (direct:direct:citrusConsumer
), и записать его в файл с именем test.hl7
в каталоге C:/HL7/source/
. Если вы хотите поиграть здесь, ознакомьтесь с дополнительными опциями для компонента File . Документация по интеграции Citrus-Camel также показывает использование компонента direct:
с именем direct:news
. Как только Route
в приведенном выше примере кода Route
готов, Citrus может отправить сообщение на direct:citrusConsumer
, чтобы поговорить с Camel.
Повторно используя ваш пример кода, интеграция будет похожа на фрагмент кода ниже (Обратите внимание на изменение в endpoint-uri)
<citrus-camel:endpoint id="inputCamelEndpoint" camel-contxt="inputCamelContext" endpoint-uri="direct:citrusConsumer"/>
Надеюсь, это поможет вам продвинуться вперед.