SAP Enterprise 消息传递 - 在运行时将带有侦听器的新队列添加到现有队列

问题描述

我有一个围绕 SAP Enterprise 消息传递的用例(从 S4HC 使用 BusinessEvents)以使其成为多租户。为此,该方法是为每个租户创建一个队列,并且特定队列将订阅该租户的多个业务事件。 目前,我已经使用以下代码实现了使其工作/仅侦听 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 使其动态化? 在这方面你能帮忙吗。

解决方法

此代码看起来不像 SAP Cloud SDK。我们检查了两次,在我们的代码中找不到提到的类。我们为 Enterprise Messaging 提供了 PoC 支持,但弃用了它,转而支持通过云应用程序编程模型 (CAP) 为其计划发布库

查看 CAP 在 Java 中的 Event Handlers 部分了解更多详细信息。据我所知,feature overview table CAP 尚不支持 Java 库的多租户。从这个意义上说,Node.js 的实现是完整的。

在 SDK 中,我们计划在 CAP 实现完成后提供一些便利。他们的实现

我认为您可以通过他们的 support channels 联系 CAP。