Grails JMS ActiveMQ、虚拟主题、messageSelector

Grails JMS ActiveMQ、虚拟主题、messageSelector,grails,jms,virtual,messaging,Grails,Jms,Virtual,Messaging,我们目前正在将Grails2.3.4与ActiveMQ 5.7.0和JMS插件1.2一起使用,以通过队列成功地接收消息映射 现在,我们想切换到一个基于“虚拟主题”的场景——当涉及到Grails的接收时,失败得很惨。。。 标准的驼峰测试可以工作,所以发送端看起来还可以 附录:我们使用“选择器感知”配置 例如。对于“虚拟主题”的“类似队列”的访问,我们需要设置“静态messageSelector”,但是通过JMX访问ActiveMQ不会显示选择器的任何值 有没有人有过在Grails中使用Active

我们目前正在将Grails2.3.4与ActiveMQ 5.7.0和JMS插件1.2一起使用,以通过队列成功地接收消息映射

现在,我们想切换到一个基于“虚拟主题”的场景——当涉及到Grails的接收时,失败得很惨。。。 标准的驼峰测试可以工作,所以发送端看起来还可以

附录:我们使用“选择器感知”配置

例如。对于“虚拟主题”的“类似队列”的访问,我们需要设置“静态messageSelector”,但是通过JMX访问ActiveMQ不会显示选择器的任何值

有没有人有过在Grails中使用ActiveMQ“虚拟主题”的经验

此外,就在最近,我发现“grailsjms/src/groovy/grails/plugin/jms/listener/ListenerConfig.groovy”显示了一些奇怪的代码(见下文)。 是有一些Groovy woodoo在工作还是只是一个错误

def registerListenerContainer(beanBuilder) {
    beanBuilder.with {
        "${listenerContainerBeanName}"() {
            it.parent = ref(containerParent + JmsListenerContainerAbstractBeanDefinitionBuilder.nameSuffix)
            it.'abstract' = false
            it.destroyMethod = "destroy"

            destinationName = this.destinationName

            pubSubDomain = topic
            // (( ????????????
            if (messageSelector) {
                messageSelector = messageSelector
            }
            // )) ????????????

            messageListener = ref(listenerAdapterBeanName)
        }
    }
}

感谢您的任何帮助、评论、想法……

我在这里帮不了什么忙,但我可以解释bean的定义。它看起来像一个no-op,但在bean定义中,几乎每个属性都是get和set,方法调用是由构建器在其缺少的方法和缺少的属性处理中进行的。所有这些内部表达式都将设置属性,调用与左侧属性名称对应的setter,并使用右侧的表达式作为值(实际上是
bean.setMessageSelector(this.messageSelector)
)其中,
messageSelector
是在
ListenerConfig
顶部定义的实变量。所以如果是外部设置的,我担心它会被用于汉克斯。。。然后看起来JMS插件中出现了一个错误——我现在可以在Grails中的resources.groovy中使用普通bean创建messageSelector,但是由JMS插件创建的使用者从未显示我设置的静态messageSelector。