<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