问题描述
我有一个围绕 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。