У меня есть пример использования обмена сообщениями 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? Можете ли вы помочь в этом отношении.