Слушатель верблюдов - PullRequest
       8

Слушатель верблюдов

2 голосов
/ 03 апреля 2019

Я хочу создать маршрут, который будет запускаться по запросу клиента.Например, у меня есть маршрут http://localhost:8080/get, где у меня есть объект json.Я хочу создать маршрут при отправке запроса на http://localhost:8080/get для отправки данных в ActiveMQ.Как слушатель событий.Я хочу отправить activeMq только тогда, когда есть запрос на этот URL.Я искал, что я не могу использовать http или http4 в from (), и это делает меня проблемой.Я пробовал от таймера к URL, а затем к ActiveMQ, но это не то, что мне действительно нужно.Это то, что я пробовал.

@GetMapping(value = "/shit")
public String getIt(@RequestParam(value = "url") String url, @RequestParam(value = "activemq") String activeMq) throws Exception {
CamelContext camelContext = new DefaultCamelContext();
RouteBuilder builder = new RouteBuilder() {
  public void configure() {
    from(url).convertBodyTo(String.class)
         .process(exchange -> {
          String body = exchange.getIn()
              .getBody()
              .toString();
          System.out.println("The body is: " + body);
        })
        .pollEnrich()
        .simple("activemq://" + activeMq);
  }
};
builder.addRoutesToCamelContext(camelContext);
camelContext.start();
return "";
}

И я хочу, чтобы маршрут был активным, пока я не остановлю его.

1 Ответ

1 голос
/ 03 апреля 2019

Да, camel-http4 предназначен только для производства, его нельзя использовать как потребителя, поскольку он основан на Apache HTTP client .

Но вам не нужны специальные вещи, такие как таймер или обогащение.Вы можете просто использовать другой http-компонент Camel, который может выступать в роли сервера.Например верблюжья пристань .

После долгого обсуждения я наконец-то понял, что вы хотели бы "разветвлять" запросы в других уже существующих приложениях , то есть вы хотели бы отправить входящий запрос дополнительно для обработкиих, ActiveMQ.

К сожалению вы не можете сделать это извне ваших приложений, потому что вы не знаете о входящих запросах в других приложениях без изменения этих других приложений.

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

from("jetty:http://localhost:[port]/yourApp")
    .to("activemq:queue:myQueueName")
  • Этот маршрут действует каквеб-сервер для /yourApp
  • и отправляет тело сообщения в очередь сообщений настроенного брокера ActiveMQ .
...