2015-02-25 2 views
0

Я ищу пример кода, использующего шаблон ответа на запрос Camel RabbitMQ.Camel RabbitMQ Request Response Pattern Пример

Мой случай использования: - Сообщение запроса смещать в RabbitMQ очереди - маршрут Camel потребить сообщение, вызовите внешний веб-службы, и ответ на ответ, основанный на ответ к свойствам сообщения

Я также использую этот прецедент, используя Spring AMQP, но я хочу сделать это с помощью Camel RabbitMQ.

Camel Документация: http://camel.apache.org/rabbitmq.html

Спасибо за вашу помощь.

Arnaud

ответ

0

Это простой пример HTTP-прокси. HTTP-запрос проходит через Rabbit MQ, ответ HTTP возвращается в Rabbit MQ.

Пример написано на верблюда 2.17.1 (верблюда-сердечника, верблюд-netty4-клиента, верблюд-RabbitMQ)

Пример вызова:

завиток -H "proxy_url: http://remotehost:port/uri" 127.0.0.1

context.addRoutes(new RouteBuilder() { 

     @Override 
     public void configure() throws Exception { 

      from("netty4-http:localhost:80"). 
        to("rabbitmq://localhost:5672/async"); 

      from("rabbitmq://localhost:5672/async"). 
        process(exchange -> { 

         // for return not only 200 HTTP STATUS 
         String techParams = "throwExceptionOnFailure=false"; 
         String proxyUrl = (String) exchange.getIn().getHeader("proxy_url"); 

         proxyUrl = proxyUrl.contains("?") && proxyUrl.contains("=") 
           ? proxyUrl + "&" + techParams : proxyUrl + "?" + techParams; 
         exchange.getIn().setHeader("proxy_url", proxyUrl); 

         exchange.setProperty(RabbitMQConstants.CORRELATIONID, 
           exchange.getIn().getHeader(RabbitMQConstants.CORRELATIONID)); 

        }). 
        toD("netty4-http:${header.proxy_url}"). 
        process(exchange -> { 
         exchange.getIn().setHeader(RabbitMQConstants.CORRELATIONID, exchange.getProperty(RabbitMQConstants.CORRELATIONID)); 
        }); 
     } 

    });