弹簧集成 jms 选择器表达式

Posted

技术标签:

【中文标题】弹簧集成 jms 选择器表达式【英文标题】:spring-integration jms selector-expression 【发布时间】:2015-09-10 12:53:23 【问题描述】:

消息驱动的通道适配器似乎不支持选择器表达式。

<int-jms:message-driven-channel-adapter 
            selector-expression="workerGroup = '@environment.getDeploymentEnvironment().toString()'"
            concurrent-consumers="1" 
            transaction-manager="transactionManager"
            destination="queue" channel="channel"/>

==>

'selector-expression' is not allowed to appear in element 'int-jms:message-driven-channel-adapter'

关于我如何使这项工作的任何提示。

【问题讨论】:

【参考方案1】:

我猜他们为 message-driven-channel-adapter 添加了 selector 而不是 selector-expression。我还没有尝试过,但我猜它的工作原理与提供的文档相同。

【讨论】:

【参考方案2】:

您似乎正在尝试使用 SpEL 来构建您的消息选择器。

选择器必须在初始化期间定义。

Spring Integration ...-expression 属性用于在运行时评估表达式(通常针对消息),而不是在初始化期间静态评估,普通 Spring #... SpEL 用于此。

你应该可以使用...

selector-expression="workerGroup = #environment.getDeploymentEnvironment().toString()" 

...在初始化期间设置此选择器。

【讨论】:

以上是关于弹簧集成 jms 选择器表达式的主要内容,如果未能解决你的问题,请参考以下文章

JMS/DDS 集成

ug中gc工具箱做弹簧显示表达式spring_dia数量是不是超过50

弹簧控制器中的正则表达式

JMS 主题与选择器

activemq、jms 主题和带有选择器的订阅者

如何测试在弹簧集成中使用通道的热文件夹?