Опитвам се да науча как да използвам 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.
Благодаря ви за отделеното време.