2016-03-15 91 views
1

我的REST應用程序將數據發佈到rabbitMQ上的隊列(Q1)。還有一個單獨的應用程序將從Q1讀取數據,處理數據並將結果返回給Q2。我的應用程序將讀取Q2的數據並返回結果。許多客戶端將使用這兩個隊列,所以我生成一個UUID並將其設置在標題中,以便我可以在Q2(響應主題)上進行監聽。然後我會查詢每個傳入的消息,並將頭中的傳入UUID與我在發佈到Q1時生成的UUID進行匹配。駱駝在同一路線建設者的不同路線上交換

from("direct:test") 
     .choice().when(isValid) 
     .bean(FOOProcessor.class, "setFooQuery") 
     .to(FOO_REQUEST_QUEUE).log(LoggingLevel.INFO, "body=${in.body}") 
     .otherwise() 
     .setBody(constant("error")) 
     .setHeader(Exchange.HTTP_RESPONSE_CODE, constant(400)).log(LoggingLevel.INFO, "body=${in.body}") 
     .to("direct:error"); 
from(FOO_RESPONSE_QUEUE) 
     .unmarshal(new JacksonDataFormat(JsonNode.class)) 
     .bean(FooProcessor.class, "setFooResponse") 
     .to("direct:end"); 
from("direct:error").log(LoggingLevel.DEBUG, "end"); 
from("direct:end").log(LoggingLevel.DEBUG, "end"); 

麻煩的是2「from」語句 - 它們創建分離駱駝交換/上下文,我無法獲得原始UUID。有什麼建議麼?

回答

0

我解決了這個問題,它使用了一個嵌入了路由生成器(有自己的生產者和消費者)的處理器。 處理器提供了對此交換的參考

process(final Exchange exchange)