Что эквивалентно типу назначения из jms:listener-container в JavaConfig?
Что эквивалентно destination-type
от jms:listener-container
в JavaConfig?
Я проверил в API эти два следующих класса без результатов.
Я пытаюсь создать потребителей для темы, многие учебники в Интернете используют destination-type="topic"
В соответствии с разделом 23.6 Поддержка пространства имен JMS есть таблица 23.2. Атрибуты таблицы элементов JMS. Где для атрибута тип назначения указано:
Тип назначения JMS для этого прослушивателя: очередь, тема или durableTopic. По умолчанию это очередь.
Для аудитории: рассмотрите две следующие ссылки, если вы пытаетесь выполнить миграцию с jms:listener-container
а также jms:listener
для JavaConfig.
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);
Хотя это немного поздно, я бы предложил использовать следующий подход для тех, кто все еще ищет ответ.
Я создал новый класс DefaultMessageListenerContainerExtended, который расширяет DefaultMessageListenerContainer, и я добавил еще один метод как setDestinationType. Это делает трюк приятным и знакомым способом.
Ниже приведена ссылка на исходный код, который можно найти в git:
Также, чтобы добавить, попробуйте использовать весеннюю версию 4.2.5, так как в этой версии есть незначительные обновления (пришлось много копать из-за проблем с версией, так как я использовал 4.1.5, а у слушающих контейнеров не было функции для установки "ReplyPubSubDomain") имущество).