Я пытаюсь научиться использовать Apache Camel, написав простые маршруты, использующие различные EIP. Мой наставник предложил Apache ServiceMix как хороший сервер для тестирования простых маршрутов, поэтому я использую Apache ServiceMix 5.1.0. В настоящее время я пытаюсь создать маршрут, который считывает запрос из файла, заменяет содержимое запроса ответом из второго файла и записывает этот ответ в третий файл.
В идеале второй файл не должен удаляться; В конечном итоге я хотел бы использовать этот шаблон в других маршрутах самообучения, а второй файл будет имитировать ответ веб-сервиса. Тем не менее, я просто пытаюсь заставить это работать прямо сейчас, поэтому я не усложняю ситуацию такими параметрами, как noop
.
Если я правильно прочитал страницу Apache Camel Wiki для Content Enricher, опустив агрегацию стратегия из enrich
EIP заставит Camel отбросить содержимое сообщения и заменить его телом, полученным из ресурса. Итак, я подумал, что этот Camel Route будет делать то, что я хочу:
<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:camel="http://camel.apache.org/schema/blueprint" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
http://camel.apache.org/schema/blueprint http://camel.apache.org/schema/blueprint/camel-blueprint.xsd">
<camelContext xmlns="http://camel.apache.org/schema/blueprint">
<route>
<from uri="file:camel/inMessage/?fileName=replaceMe.txt" />
<enrich uri="file:camel/storedResponse/?fileName=withThis.txt" />
<to uri="file:camel/outMessage/?fileName=output.txt" />
</route>
</camelContext>
</blueprint>
Что на самом деле происходит, так это то, что содержимое camel/storedResponse/withThis.txt
заменяется содержимым camel/inMessage/replaceMe.txt
. Файл camel/outmessage/output.txt
создается, но содержит содержимое replaceMe.txt
, а не withThis.txt
.
Поскольку я все еще новичок в Camel, я предполагаю, что проблема в том, что я неправильно прочитал что-то в документации или упустил из виду очевидную проблему конфигурации.
Для чего это стоит, вот содержимое файлов перед запуском маршрута.
replaceMe.txt
This is the message sent. It should not appear in the response.
withThis.txt
This is the file stored in the server. The response should contain this text.
output.txt does not yet exist.
Вот содержимое файлов после завершения маршрута.
replaceMe.txt has been deleted.
withThis.txt
This is the message sent. It should not appear in the response.
output.txt
This is the message sent. It should not appear in the response.
Спасибо за уделенное время.