print sys.path
使用消息驱动的适配器,我想使用选择器从AMQ代理过滤消息。
消息必须根据动态bean变量值进行过滤,该变量值使用selector bean ref option
进行验证答案 0 :(得分:1)
回复你的意见..
感谢您的回复,我想在消息驱动的通道适配器中使用selector属性过滤消息。我能够在选择器属性@ bean.method()中调用bean方法,但是无法将header参数传递给该方法@ bean.method(header.param)。我期望选择器应该验证动态传递header参数到bean方法并返回布尔结果,以便可以过滤消息。
<int-jms:message-driven-channel-adapter connection-factory="connectionFactoryName"
destination="destinationName" channel="channelName"
selector="#{@bean.method(header.param)}" auto-startup="false"/>
上面的selector属性具有bean方法,配置为每当从AMQ中选择消息时动态地接收头param。但它在语法上是错误的,无法传递标题参数。你能帮忙吗?
您似乎无法理解JMS消息选择器是什么......
selector="foo='bar'"
...告诉代理只发送foo
属性等于bar
的消息。
它在启动期间在消费者上配置。
你拥有的不是&#34;动态&#34;。在上下文初始化期间,#{...}
表达式被计算一次。
你想做的事没有意义;没有&#34;消息&#34;从中评估标题。您无法根据消息内容告诉代理要发送哪些消息。在发送消息之前,在代理上完成过滤。
如果你不介意&#34;失去&#34;您不感兴趣的消息(或正在从主题中消费)并且您想要过滤要处理的消息,然后添加
<filter ... expression="#{@bean.method(header.param)}" />
适配器之后。您可以使用丢弃通道将被忽略的消息重新发布到另一个队列(或对它们执行其他操作)。