gpt4 book ai didi

java - 使用选择器的 Spring 集成 JMS 消息驱动 channel 适配器

转载 作者:行者123 更新时间:2023-12-02 13:21:43 25 4
gpt4 key购买 nike

<int-jms:message-driven-channel-adapter>

使用消息驱动适配器,我想使用选择器过滤来自AMQ代理的消息。

消息必须根据动态 bean 变量值进行过滤,该值使用选择器 bean ref 选项进行验证

最佳答案

回复您的评论..

Thanks for your reply , I want to filter message using selector attribute in Message driven channel adaptor . i was able to call bean method inside selector attribute @bean.method() , but not able to pass header parameter to that method @bean.method(header.param) . I am expecting selector should validate dynamically passing the header parameter to bean method and return boolean result so that message can be filtered.

<int-jms:message-driven-channel-adapter connection-factory="connectionFactoryName" 
destination="destinationName" channel="channelName"
selector="#{@bean.method(header.param)}" auto-startup="false"/>

the above selector attribute has bean method configured to receive header param dynamically whenever pick message from AMQ . but it is syntactically wrong not able to pass header param. can you help?

您似乎不明白什么是 JMS 消息选择器...

selector="foo='bar'"

...告诉代理仅发送 foo 属性等于 bar 的消息。它是在启动期间在消费者上配置的。

你所拥有的并不是“动态的”。 #{...} 表达式在上下文初始化期间计算一次。

您尝试做的事情毫无意义;还没有可以评估 header 的“消息”。您无法根据消息的内容告诉代理要发送哪些消息。过滤是在发送消息之前在代理上完成的。

如果您不介意“丢失”您不感兴趣(或从某个主题中使用的消息)的消息,并且希望过滤要处理的消息,请添加

<filter ... expression="#{@bean.method(header.param)}" /> 

在适配器之后。您可以使用丢弃 channel 将忽略的消息重新发布到另一个队列(或对它们执行其他操作)。

关于java - 使用选择器的 Spring 集成 JMS 消息驱动 channel 适配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43549046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com