<int-jms:message-driven-channel-adapter>
彈簧一體化JMS消息驅動的通道適配器使用選擇
使用消息驅動的適配器,我要使用選擇器從AMQ經紀人過濾消息。
消息來進行篩選,其使用選擇豆裁判選項
<int-jms:message-driven-channel-adapter>
彈簧一體化JMS消息驅動的通道適配器使用選擇
使用消息驅動的適配器,我要使用選擇器從AMQ經紀人過濾消息。
消息來進行篩選,其使用選擇豆裁判選項
在回答您的意見驗證動態豆變量值..
感謝您的回覆,我想用選擇來過濾消息消息驅動通道適配器中的屬性。我能夠在選擇器屬性@bean.method()中調用bean方法,但無法將頭參數傳遞給該方法@bean.method(header.param)。我期待選擇器應該動態驗證將標頭參數傳遞給bean方法並返回布爾結果,以便可以過濾消息。
<int-jms:message-driven-channel-adapter connection-factory="connectionFactoryName"
destination="destinationName" channel="channelName"
selector="#{@bean.method(header.param)}" auto-startup="false"/>
上述選擇屬性具有配置成從AMQ動態接收頭PARAM每當拾取消息bean方法。但它在語法上錯誤不能傳遞頭部參數。你能幫我嗎?
你似乎並不理解一個JMS消息選擇是什麼...
selector="foo='bar'"
...告訴經紀人只與foo
屬性等於bar
發送消息。 它在啓動期間在消費者上配置。
你有什麼不是「動態」。 #{...}
表達式在上下文初始化過程中被評估一次。
你試圖做的事情沒有意義;沒有評價標題的「消息」。根據消息的內容,您無法告訴代理髮送哪些消息。過濾是在發送消息之前在代理上完成的。
如果你不介意的「失去」你的消息不感興趣(或由一個主題是消費),並要篩選要處理消息,然後添加一個
<filter ... expression="#{@bean.method(header.param)}" />
適配器後。您可以使用丟棄通道將被忽略的消息重新發布到另一個隊列(或者用它們做其他事情)。
你的問題不清楚;選擇器不能在運行時更改(不停止/啓動容器);它在初始化期間被烘烤到消費者中。 –
感謝您的回覆,我想使用消息驅動通道適配器中的選擇器屬性來過濾消息。我能夠在選擇器屬性@bean.method()中調用bean方法,但無法將頭參數傳遞給該方法@bean.method(header.param)。我期待選擇器應該動態驗證將標頭參數傳遞給bean方法並返回布爾結果,以便可以過濾消息。 – Augustin