[英]Camel - Resolving ActiveMQ topic name when using wildcards
當我從基於通配符的主題中讀取內容時,有一種情況:
<route id="ReadMQ">
<from uri="jmsep://topic:sys/*/test/request" />
但是我需要基於原始輸入主題名稱重新路由響應,例如某人發布在sys/5/test/request
,我應該在sys/5/test/response
上發送響應,以便我有兩個不同的選擇請求和響應的不同主題。 如您所見,我正在使用spring DSL來配置路由,但不確定如何動態配置<to uri=...
部分。 如果您有任何線索,請告訴我。 謝謝!
我也在努力尋找類似的東西,並使用simple使其工作。
請注意, jmsep://
似乎不正確。 至少您應該像jmsep:
這樣刪除斜線。 至少應定義jmsep
。 無論如何,在下面的示例中,我假定您正在使用jms
和主題。 如果不是這種情況,則該示例將不起作用。 同樣, someWhere
和someWhereElse
應該更改為正確的。
無論如何,到了重點。 首先,讓我們檢查基本路線是否適用於日志記錄:
<route id="ReadMQ">
<from uri="someWhere:topic:sys/*/test/request" />
<log loggingLevel="INFO" message="Received message with topic: ${header.JMSDestination.topicName}"/>
</route>
在sys/5/test/request
發送一條消息,您應該能夠在${ACTIVEMQ_DIR}/data/activemq.log
一個條目,如下所示: Received message with topic: sys/5/test/request
。
從這里開始,您應該選擇適合您需求的企業集成模式 。
也許您可以擺脫以下條件,但我還沒有對其進行測試:
<route id="ReadMQ">
<from uri="someWhere:topic:sys/*/test/request" />
<to uri="someWhereElse:topic:${header.JMSDestination.topicName.replace("request", "response")}"/>
</route>
這再次使用簡單,但是您可以從camel.apache.org/languages.html中選擇另一種語言。
希望這會有所幫助(盡管我懷疑它會起作用)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.