Маршруты верблюда от activemq до конечной точки отдыха

Я пытаюсь использовать Spring Boot 1.5.2.RELEASE + Camel (Spring Boot starter) 2.19.2 для прослушивания очереди ActiveMQ, а затем отправить сообщение на URL-адрес конечной точки отдыха (метод POST) в качестве его тела. Как лучше всего этого добиться? Я собрал кусочки информации и пытаюсь связать все вместе, но немного запутался.

Вот то, что я собрал для Camel Rest DSL, я не слишком уверен, создает ли верблюд ниже эти сервисы отдыха через это или это просто уже открытая конечная точка, в моем случае это уже открытая конечная точка

rest("/basePath")
  post("/someEndpoint").to("direct:restEndpoint")

Используя приведенное выше, я собрал для ActiveMQ, что я не уверен, что он правильный.

from("activemq:queue:<queue_name>").to("direct:restEndpoint")

Но опять же, я не слишком уверен, как прослушивать очередь ActiveMQ на предмет новых сообщений или это то, что Camel всегда будет делать по умолчанию? Кроме того, мне нужно передать сообщение в качестве тела сообщения моей конечной точке отдыха. Я также видел некоторые ссылки на camel-http4 и camel-http, и я полностью сбит с толку.

Будем очень благодарны любой помощи.


person Sayantan    schedule 22.08.2017    source источник
comment
Поскольку вы только начинаете, я бы посоветовал не делать сразу много вещей, которые вы делаете. Забудьте о REST, просто сосредоточьтесь на чтении из очереди. Заставьте это работать. Как только это будет сделано, переходите к следующему и следующему. Каждый шаг сам по себе имеет множество параметров и опций для настройки. Ознакомьтесь с ними, а затем проложите свои маршруты. Большинство ваших вопросов изложено в документации, поэтому вам необходимо прочитать об этом.   -  person Souciance Eqdam Rashti    schedule 22.08.2017
comment
Посмотрите на EIP, обогащающий контент, чтобы выполнить опрос по запросу из конечной точки очереди / верблюда - вы можете использовать pollEnrich, а затем подумать о том, нет ли сообщений в очереди, затем использовать тайм-аут или что-то в этом роде.   -  person Claus Ibsen    schedule 23.08.2017
comment
Также вы немного запутались. Служба REST запускается, когда ее вызывает какой-либо HTTP-клиент, а не когда новое сообщение поступает в очередь JMS.   -  person Claus Ibsen    schedule 23.08.2017
comment
Я не уверен, что вы понимаете, чего я пытаюсь достичь, я пытаюсь опрашивать новые сообщения и запускать HTTP-вызов (сервис отдыха), поэтому в основном мой верблюжий маршрут будет действовать здесь как клиент.   -  person Sayantan    schedule 23.08.2017


Ответы (1)


Когда вы начинаете использовать Camel, часто возникает некоторая путаница, но ваше окончательное решение будет выглядеть примерно так:

from("activemq:queue:my-route")
  .process(/* change the in/out messages if you need to */)
  .to("http4://your-endpoint.com");

Не пытайтесь просто скопировать / вставить этот код, пока он не заработает. Мое практическое правило Camel: всегда читайте документацию по компонентам и пробуйте поиграть с ними, используя в своем программном обеспечении. В вашем случае я предлагаю:

  1. Прочтите документацию по компоненту ActiveMQ и попробуйте читать из ActiveMQ / записывать в Журнал;
  2. Создайте ввод с помощью таймера и отправьте его в конечную точку Rest, используя Компонент HTTP4;

Ваши первые маршруты потребуют времени для простых вещей, но вы быстро пойдете по течению.

person jfneis    schedule 22.08.2017
comment
Спасибо, это действительно хорошая помощь. Кстати, одна вещь, которая мне до сих пор не ясна, если я настрою маршрут для чтения из очереди, всегда ли он ищет новые сообщения? Или мне нужно настроить это отдельно? - person Sayantan; 23.08.2017
comment
Он всегда ищет новые сообщения. Вы можете настроить, сколько потоков вы хотите, и другие вещи, но как только появится сообщение и появится свободный поток, оно будет прочитано. - person jfneis; 23.08.2017
comment
спасибо, что помогает. В настоящее время я застрял на том, чтобы загрузить приложение весенней загрузки с конфигурацией activeMQ, разместив для этого отдельный вопрос. Как вы сказали, началось с маленьких шагов :) - person Sayantan; 23.08.2017
comment
Вот вопрос, который я разместил на том же самом. Не могли бы вы помочь, если возможно? stackoverflow .com / questions / 45831782 / - person Sayantan; 23.08.2017
comment
Я взгляну. Пожалуйста, примите этот ответ, если он помог! Tks - person jfneis; 23.08.2017