Вопрос по rest, java – Как я могу вызвать RESTful-сервис через Apache Camel?

10

В настоящее время я использую метод HTTP для вызова некоторого URL, который создаст проблему JIRA.

Теперь я хочу использовать Apache Camel, как я могу это использовать?

Мне нужно вызвать следующую ссылку через Camel:

http://localhost:8080/rest/api/2/project/" + key + /components

Поскольку я новичок в Camel, пожалуйста, предложите также несколько решений и примеров.

Спасибо

Ваш Ответ

4   ответа
0

Вы можете использовать REST сервис от верблюда, используяCXFRS ComponentУ верблюда апачей достаточно информации об этом.

http://camel.apache.org/cxfrs.html

2

Я использую Apache Camel Jetty

CamelContext context = new DefaultCamelContext();
    public void configure(){
           context.addRoutes(new RouteBuilder(){
           from("jetty:localhost:9000/offers")
           .to("direct:getOffers")
           .end();

    }

});

так вот когда пользователь ударитHttp: // Localhost: 9000 / предложений тогда прямая конечная точка: getOffers будет вызван

так что теперь определение конечной точки getOffers

context.addRoutes(new RouteBuilder(){
     public void configure(){
          from("direct:getOffers")
          .to("jetty:http://localhost:9008/api/v2.0/offers?  
          bridgeEndpoint=true")
         .end();

     }

});

Здесь другой сервис работает на 9008 с ресурсом отдыха Http: // Localhost: 9008 / API / v2.0 / предложения и это ресурс, который я пытаюсь потреблять.

поэтому, когда запускается экземпляр верблюда, он регистрирует оба маршрута, а затем выполняет обработку, как описано выше.

Примечание. Для этого важно добавить параметр? BridgeEndpoint = true.

8

Вы можете легко использоватьКомпонент CXFRS; если вам нужно сделать это с помощьюКомпонент HTTP по какой-то причине вы можете легко использовать это:

<setHeader headerName="CamelHttpUri">
      <simple>http://localhost:8080/rest/api/2/project/${header.myKey}/components</simple>
</setHeader>
<inOut uri="http://doesnt.matter.we/override/it/anyways" />

И, конечно, вам нужно будет обогатить ваше сообщениеmyKey Заголовок, прежде чем добраться до этой части маршрута.

Error: User Rate Limit Exceeded
9

См. Также этот FAQ по использованию динамических оконечных точек в Camel http://camel.apache.org/how-do-i-use-dynamic-uri-in-to.html

По сути, шаблон EIP для этого является списком получателей.

Так что в вашем случае это также может быть упрощено до одного EIP

<recipientList>
  <simple>http://localhost:8080/rest/api/2/project/${header.myKey}/components</simple>
</recipientList>

Следите за тем, чтобы http компонент в Camel был полностью синхронным. Если вы хотите сделать запрос / ответ по HTTP и избежать блокирования вызывающей стороны во время ожидания ответного сообщения, то вы можете использовать некоторые другие компоненты HTTP от Camel, такие как:

  • camel-ahc
  • camel-http4
  • camel-jetty
Error: User Rate Limit Exceeded

Похожие вопросы