Обмен сообщениями SAP Enterprise - добавление новых очередей со слушателями к существующим очередям во время выполнения

У меня есть пример использования обмена сообщениями SAP Enterprise (использование BusinessEvents из S4HC), чтобы сделать его многопользовательским. Для этого используется подход, создавая одну очередь для каждого арендатора, и конкретная очередь будет подписана на несколько бизнес-событий этого арендатора. В настоящее время я достиг функциональности, позволяющей заставить его работать / прослушивать только 1 очередь с помощью следующего кода. Обратите внимание, что все события являются асинхронными или неблокирующими вызовами с реализованным классом слушателя.

    @Bean
public Connection getSession(MessagingServiceJmsConnectionFactory connectionFactory) throws JMSException, InterruptedException {
    Connection connection = connectionFactory.createConnection();
    //connection.start();
    Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

    Queue queue = session.createQueue(QUEUE_PREFIX + QUEUE);
    final MessageConsumer messageConsumer = session.createConsumer(queue);
    messageConsumer.setMessageListener(new DefaultMessageListener());
    connection.start();
    Thread.sleep(5000);
    return connection;

}

Подход состоит в том, чтобы создать очереди для обратных вызовов подписки через диспетчер служб и заставить приложение прослушивать новую очередь (добавлять ее в существующие очереди) без остановки / перезапуска приложения. Как получить сеанс фабрики соединений и добавить новые очереди со слушателем, чтобы сделать его динамическим с помощью SpringBoot? Можете ли вы помочь в этом отношении.


person Arun Kumar    schedule 25.02.2021    source источник


Ответы (1)


Этот код не похож на SAP Cloud SDK. Мы проверили дважды, и упомянутые классы не встречаются в нашем коде. У нас была поддержка PoC для Enterprise Messaging, но мы отказались от нее в пользу запланированного выпуска библиотеки для нее с помощью модели программирования облачных приложений (CAP).

Дополнительные сведения см. В разделе CAP в обработчиках событий в Java. Насколько я могу судить из обзорной таблицы функций CAP не Пока еще нет поддержки мультиарендности с библиотекой Java. В этом смысле реализация Node.js завершена.

В SDK мы планируем обеспечить некоторое удобство поверх реализации CAP, когда она будет завершена. Их реализация

Я думаю, вы можете обратиться к CAP через их каналы поддержки.

person Artyom Kovalyov    schedule 25.02.2021
comment
Привет, Артём, Спасибо за ответ. Я следил за примером github 'github.com/SAP-samples/enterprise -messaging-client-java-samples 'в SAP Cloud SDK для интеграции с облаком SAP s4h. Это устарело сейчас? - person Arun Kumar; 25.02.2021
comment
Кроме того, я не использую модель CAP для интеграции EMS. В настоящее время используется версия SAP Cloud SDK 3.31.0. - person Arun Kumar; 26.02.2021
comment
Привет @ArunKumar, я проверил репо. Это общий образец на Java для использования обмена сообщениями. Я не думаю, что он устарел, но он не создан SDK. Раньше у нас была типобезопасная реализация клиента, также использующая JMS в качестве бэкэнда, но затем мы отказались от нее в пользу библиотеки CAP. Вы, вероятно, можете интегрировать SDK с подходом из репозитория, но если что-то не получается, я считаю, что лучший способ - создать проблему GitHub в этом репозитории. - person Artyom Kovalyov; 26.02.2021
comment
Я также рекомендую вам попробовать библиотеку CAP, если многопользовательская среда не является вашей главной заботой. - person Artyom Kovalyov; 26.02.2021
comment
Спасибо за ответ ... Пример использования - создание мультитенантного приложения. Что касается CAP, я читал / слышал о проблемах интеграции EMS. Следовательно, не могу пойти по этому пути. Я добился интеграции EMS с помощью SDK, но работает в режиме единственного клиента. - person Arun Kumar; 26.02.2021
comment
Вы использовали этот пример + SDK? Я думаю, вы можете использовать наши абстракции для мультитенантности, но у нас пока нет их для прослушивателей событий EMS. Вы можете создать запрос функции здесь с более подробной информацией о вашем приложение. Посмотрим, есть ли обходной путь или что-то в этом роде. - person Artyom Kovalyov; 27.02.2021
comment
Да ... использовал этот пример + SDK ... вызовет запрос о проблеме по предоставленной ссылке - person Arun Kumar; 01.03.2021