В Apache Camel, для какого компонента будут создаваться конечные точки, если он не существует? - PullRequest
0 голосов
/ 27 мая 2020

Я новичок в Camel, и у меня есть несколько c вопросов, на которые не могу найти ответы в Интернете. Пожалуйста, помогите, и я ценю это.

  1. Я прочитал много примеров в Интернете и видел такие примеры:

    from (direct: A) .to (jms: queue: B)

    Но никакой конфигурации для них не видел. У меня вопрос: что будет, если прямого не существует? Как насчет from (jms: queue: A) .to (direct: A)? а как насчет других компонентов?

  2. Каков порядок выполнения в этом примере? сначала передает исходное сообщение B, затем обрабатывает и передает C?

    from (прямой: A) .to (jms: B) .process (something) .to (jms: C)

1 Ответ

0 голосов
/ 27 мая 2020

Direct - это очередь в памяти, предоставляемая Camel. До Camel 3 он был связан с модулем camel-core, и вам вообще не требовалось никакой конфигурации, чтобы использовать прямой компонент. Однако из-за модульности, начиная с Camel 3, direct был сделан отдельным компонентом, и для его использования необходимо импортировать camel-direct.

Jms, с другой стороны, является общим c компонент, с помощью которого вы можете реализовать подключение к различным поставщикам Jms, таким как ActiveMq (хотя в Camel activemq есть собственный компонент), IBM MQ, Weblogi c JMS-сервер и другие.

На ваш 1-й вопрос, если direct не существует, вам необходимо импортировать прямой компонент в вашу сборку. Если предоставленный компоненту uri отсутствует, Camel создаст свой собственный. Это верно для большинства компонентов Camel. Одним из наиболее распространенных является компонент file, который используется для получения файлов из заданного каталога. Если данный каталог отсутствует, Camel достаточно умен, чтобы создать каталог. Очевидно, это поведение по умолчанию, и у вас есть большой контроль, чтобы выбрать, как вы хотите, чтобы ваш маршрут вел себя.

Что касается вашего второго вопроса, маршрут будет обрабатываться полностью по порядку, то есть сообщение будет получено из direct:A, затем будет отправлено на jms:B. После этого он будет обработан с помощью процессора something и, наконец, будет отправлен на jms:c.

Здесь следует отметить, что direct:A - это просто пример для демонстрации синтаксиса маршрута. . Вы можете использовать любой компонент, который может выступать в роли потребителя.

...