Spring JMS Используйте двухточечное соединение и тему в одном приложении - PullRequest
0 голосов
/ 11 февраля 2019

В настоящее время мы внедряем ActiveMQ в наше существующее приложение, которое работало в другой системе очередей.Spring JMS используется для использования существующей интеграции в среде Spring.

Большинство наших приложений используют двухточечную (очередь) связь, за исключением одной.Он должен иметь возможность прослушивать тему, созданную другим производящим приложением, при одновременной публикации в нескольких очередях.

Это означает, что приложение должно поддерживать как темы, так и очереди.Однако при установке глобального свойства

jms:
    pub-sub-domain: true

настройка является глобальной, и все подписчики очереди немедленно подписываются на темы, которые мы можем видеть в веб-интерфейсе ActiveMQ.

IsЕсть ли способ настроить приложение для поддержки одновременно и тем, и очередей?

1 Ответ

0 голосов
/ 11 февраля 2019

Свойство boot используется для настройки фабрики контейнеров по умолчанию, используемой методами @JmsListener, а также для настройки JmsTemplate.

Просто переопределите фабрику контейнеров Boot по умолчанию ...

@Bean
public DefaultJmsListenerContainerFactory jmsListenerContainerFactory(
        DefaultJmsListenerContainerFactoryConfigurer configurer,
        ConnectionFactory connectionFactory) {

    DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
    configurer.configure(factory, connectionFactory);
    return factory;
}

и затем добавьте второй

@Bean
public DefaultJmsListenerContainerFactory jmsTopicListenerContainerFactory(
        DefaultJmsListenerContainerFactoryConfigurer configurer,
        ConnectionFactory connectionFactory) {

    DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
    configurer.configure(factory, connectionFactory);
    factory.setPubSubDomain(true); << override the boot property
    return factory;
}

Затем обратитесь к альтернативной фабрике в @JmsListener для темы.

В качестве альтернативы, если у вас нет слушателейдля обоих типов установите для свойства true, но переопределите конфигурацию Boot JmsTemplate.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...