跳到主要内容

使用Java API创建队列

当您创建 PersistentMessageReceiver 时,可以使用 Java 的 PubSub+ API 创建非持久队列。要创建非持久队列,请将 Queue.nonDurableExclusiveQueue(queueName) 作为参数传递给 build() 方法。当您在 PersistentMessageReceiver 上调用 start() 方法时,会在 PubSub+ 事件代理上配置队列。创建该队列的客户端应用程序从事件代理断开连接后,该非持久队列将被删除。以下示例展示了如何创建非持久队列:

/* 创建一个 PersistentMessageReceiverBuilder 实例,用于创建 PersistentMessageReceiver 对象。 */
final PersistentMessageReceiver receiver = service.createPersistentMessageReceiverBuilder()
.build(Queue.nonDurableExclusiveQueue("QUEUE_NAME")); // 如果不存在,此配置将在调用 start() 方法时在代理上配置非持久队列。
.start(); // 使服务恢复常规职责。在调用此方法之前,服务被视为非工作状态。

如果客户端意外断开连接(例如,由于网络问题),队列将在 60 秒后被删除。这允许自动重新连接逻辑在队列消失之前重新将客户端连接到队列。

要创建持久队列,请在构建 PersistentMessageReceiver 对象时调用 withMissingResourcesCreationStrategy() 方法。此接口接受一个参数,该参数有两个可能的值:

  • MissingResourcesCreationStrategy.DO_NOT_CREATE — 默认值,禁用创建缺失资源的任何尝试。

  • MissingResourcesCreationStrategy.CREATE_ON_START — 只要客户端具有足够的权限(否则会抛出异常),就会创建 build() 方法中提供的队列。

当您在 PersistentMessageReceiver 上调用 start() 方法时,会在事件代理上配置队列。

对于 Java 的 PubSub+ API,持久端点配置是通过缺失资源创建策略实现的,这意味着您无法取消配置端点。

以下示例展示了如何使用缺失资源创建策略创建持久队列:

/* 创建一个 PersistentMessageReceiverBuilder 实例,用于创建 PersistentMessageReceiver 对象。 */
final PersistentMessageReceiver receiver = service.createPersistentMessageReceiverBuilder()
.withMissingResourcesCreationStrategy( // 配置缺失资源创建策略。
MissingResourcesCreationStrategy.CREATE_ON_START) // 在建立连接时尝试创建缺失的资源的策略。
.build(Queue.durableExclusiveQueue("QUEUE_NAME")) // 如果不存在,此配置将在调用 start() 方法时在代理上配置持久队列。
.start(); // 使服务恢复常规职责。在调用此方法之前,服务被视为非工作状态。

事件代理可以配置队列模板,这允许您为使用 Java API 创建的队列设置自定义属性。当使用缺失资源创建策略时,只有当您创建的队列名称与模板名称匹配时,队列模板才会覆盖默认的队列属性。有关队列模板的更多信息,请参阅队列和主题端点,以及如何使用 Solace CLI 配置队列模板的说明,请参阅配置端点模板。

您不能使用 Java 的 PubSub+ API 取消配置使用缺失资源创建策略创建的队列。使用 SEMP 或 SolacePubSub+ 事件代理命令行界面(CLI)来取消配置这些队列。