3

JavaConfig中的destination-typefrom等价于什么?jms:listener-container

我已经在 API 中检查了以下两个类,但没有结果。

我正在尝试为一个主题创建消费者,在网络上使用了许多教程destination-type="topic"

根据23.6 JMS 命名空间支持部分,有表 23.2。JMS 元素表的属性。目的地类型属性在哪里说:

此侦听器的 JMS 目标类型:队列、主题或持久主题。默认为队列。

对于观众:如果您尝试从JavaConfig进行迁移jms:listener-container,请考虑以下两个链接。jms:listener

4

2 回答 2

2

如有疑问,请查看解析器(在本例中AbstractListenerContainerParser);该属性不映射到单个属性,它映射到pubSubDomain并且subscriptionDurable...

    String destinationType = ele.getAttribute(DESTINATION_TYPE_ATTRIBUTE);
    boolean pubSubDomain = false;
    boolean subscriptionDurable = false;
    if (DESTINATION_TYPE_DURABLE_TOPIC.equals(destinationType)) {
        pubSubDomain = true;
        subscriptionDurable = true;
    }
    else if (DESTINATION_TYPE_TOPIC.equals(destinationType)) {
        pubSubDomain = true;
    }
    else if ("".equals(destinationType) || DESTINATION_TYPE_QUEUE.equals(destinationType)) {
        // the default: queue
    }
    else {
        parserContext.getReaderContext().error("Invalid listener container 'destination-type': " +
                "only \"queue\", \"topic\" and \"durableTopic\" supported.", ele);
    }
    configDef.getPropertyValues().add("pubSubDomain", pubSubDomain);
    configDef.getPropertyValues().add("subscriptionDurable", subscriptionDurable);
于 2014-08-08T22:55:17.227 回答
-1

虽然这有点晚了,但我建议任何仍在寻找答案的人使用以下方法。

我创建了一个扩展DefaultMessageListenerContainer的新类DefaultMessageListenerContainerExtended ,并且我添加了另一种方法作为setDestinationType。这以一种很好且熟悉的方式来解决问题。

以下是源代码的链接,可以在 git 上找到:

https://github.com/HVT7/spring-jms-set-destination-type/blob/master/DefaultMessageListenerContainerExtended.java

另外要补充的是,尝试使用 spring 版本4.2.5,因为该版本中有一些小更新(由于版本问题,我使用 4.1.5 并且侦听器容器没有设置“ReplyPubSubDomain”的功能,因此不得不挖掘很多财产)。

于 2016-05-04T12:25:59.143 回答