2015-06-24 3 views
2

Я пытаюсь использовать Camel Cache в первый раз. Поэтому я создал небольшое приложение, основанное на архетипе верблюда-джавы.
Мой код основан на примерах от here. Вот этот фрагмент кодаCamel Маршруты запускаются, но не запускаются при использовании Camel Cache

public class AddingToCache extends RouteBuilder { 
    public void configure() { 
      from("direct:start") 
      .log("START") 
      .setHeader(CacheConstants.CACHE_OPERATION, constant(CacheConstants.CACHE_OPERATION_ADD)) 
      .setHeader(CacheConstants.CACHE_KEY, constant("Custom_key")) 
      .process(new Processor() { 
       @Override 
       public void process(Exchange exchange) throws Exception { 
        exchange.getOut().setBody("My custom out"); 
       } 
      }) 
      .log("starting ...") 
      .to("cache://cache1") 
      .to("direct:next"); 
    } 
} 


public class ReadingFromCache extends RouteBuilder { 
    @Override 
    public void configure() throws Exception { 
     from("direct:next") 
      .setHeader(CacheConstants.CACHE_OPERATION, constant(CacheConstants.CACHE_OPERATION_GET)) 
      .setHeader(CacheConstants.CACHE_KEY, constant("Custom_key")) 
      .to("cache://cache1") 
      .choice() 
      .when(header(CacheConstants.CACHE_ELEMENT_WAS_FOUND).isNotNull()) 
       .process(new Processor() { 
        @Override 
        public void process(Exchange exchange) throws Exception { 
         Object body = exchange.getIn().getBody(); 
         System.out.println("Cache body - " + body); 
        } 
       }) 
      .otherwise() 
       .process(new Processor() { 
        @Override 
        public void process(Exchange exchange) throws Exception { 
         Object body = exchange.getIn().getBody(); 
         System.out.println("Cache body when not found - " + body); 
        } 
       }) 
      .end() 
      .to("direct:finish"); 
    } 
} 

ответ

2

ваши маршруты, вероятно, работают, вы просто еще не применяли их пока (из кода, который размещен выше в любом случае). вам нужно отправить сообщение на direct:start или direct:next маршрутов с использованием ProducerTemplate осуществлять маршруты ...

шаблон ProducerTemplate = camelContext.createProducerTemplate();
template.sendBody ("direct: start", "message");

Смежные вопросы