跳到主要内容

配置和撤销持久端点

在事件代理上配置持久队列或主题端点有两种方式:

  • 管理员可以通过 Broker Manager、SEMP、Solace CLI 或 SolAdmin 手动配置持久端点。

    • 即使对于管理员配置的端点,面向对象的 JavaScript、Node.js、Java RTO 或 .NET 的 PubSub+ 消息 API 也需要您创建一个逻辑队列或主题端点实例,以便在创建消费者流时使用。
  • 在已连接的会话中,客户端可以通过消息 API 动态配置持久端点。
    要动态配置持久端点,请调用下表中列出的方法之一,并传入端点属性和配置标志。有关更多信息,请参阅定义端点属性。

客户端可以通过 API 配置持久端点,而无需立即创建消费流。

相关示例

有关如何动态配置持久端点的示例,请参考:

  • Java RTO API 的 QueueProvision.java
  • C API 的 QueueSubscriber.c
  • .NET API 的 QueueConsumer.cs

使用PubSub+消息API配置持久端点

要使用 PubSub+ 消息 API 动态配置持久端点,请完成以下步骤:

  1. 创建端点的本地 API 表示。

    • 对于 Java RTO、JavaScript、Node.js 和 .NET API,这是一个队列或端点对象。
    • 对于 C API,这是一个队列或端点属性列表。
  2. 将对象或属性列表传递给适当的方法或函数,以在事件代理上配置端点或队列。

PubSub+ 消息 API使用方法
Java RTO```
// 创建本地队列或端点对象:
Solclient.Allocator.newQueue(...)
Solclient.Allocator.newTopicEndpoint(...)
// 在事件代理上配置队列或端点:
SessionHandle.provision(...)

下表展示了如何创建持久端点或队列的 API 表示,并在事件代理上进行配置:

在 JavaScript 和 Node.js API 中使用缺失资源创建策略

在事件代理上配置队列或端点的另一种方式是使用缺失资源创建策略。要使用缺失资源创建策略,请在 createMessageConsumer() 函数中将 createIfMissing 设置为 true

subscriber.messageSubscriber = subscriber.session.createMessageConsumer({
// 设置 solace.MessageConsumerProperties
queueDescriptor: { name: subscriber.queueName, type: solace.QueueType.QUEUE },
createIfMissing: true
});

当您将 createIfMissing 设置为 true 时,createMessageConsumer() 函数会创建队列,并在事件代理上信号创建一个同名的队列(如果尚未存在)。您可以在事件代理上配置的队列可以使用队列模板或在创建 MessageConsumer 对象时直接设置 QueueProperties。当您使用缺失资源创建策略时,队列模板只会覆盖您提供的队列属性,如果创建的队列名称匹配模板的 name-filter。有关队列模板的信息,请参阅队列和主题端点;有关如何使用 Solace CLI 配置队列模板的说明,请参阅配置端点模板。有关如何使用缺失资源创建策略动态配置持久端点的示例,请参考:

  • JavaScript API 的 GuaranteedSubscriber.js
  • Node.js API 的 QueueConsumer.js

使用PubSub+消息API撤销持久端点

您可以以两种方式撤销持久端点:

  • 管理员可以通过 Broker Manager、Solace CLI、SEMP 或 SolAdmin 在事件代理上移除持久端点。
  • 在已连接的会话中,客户端可以移除通过 API 配置的持久端点,如下所示:
    调用下表中列出的方法之一,并传入要移除的端点(即,对于 Java RTO、JavaScript、Node.js 和 .NET API,是对象;对于 C API,是端点名称和类型)以及配置标志,以指示“撤销配置”是否应同步或异步完成。有关更多信息,请参阅 PubSub+ 消息 API 文档或相应消息 API。

客户端只能移除其最初配置的端点(即,如果它是端点的所有者),或者如果端点被配置为删除权限级别,则允许其他客户端移除该端点(参阅定义端点属性)。

通过管理接口(Broker Manager、SolAdmin、CLI 或 SEMP)创建的端点只能由管理操作撤销和删除。也就是说,如果端点是由管理操作创建的,则不能通过客户端 API 撤销,无论配置的权限如何。

PubSub+ 消息 API使用方法
Java RTOSessionHandle.deprovision(...)
有关更多信息,请参阅 Java RTO 的 PubSub+ 消息 API 参考。
CsolClient_session_endpointDeprovision(...)
有关更多信息,请参阅 C 的 PubSub+ 消息 API 参考。
.NETISession.Deprovision(...)
有关更多信息,请参阅 .NET 的 PubSub+ 消息 API 参考。
JavaScript 和 Node.jssession.deprovisionEndpoint(...)
有关更多信息,请参阅 JavaScript 的 PubSub+ 消息 API 参考或 Node.js 的 PubSub+ 消息 API 参考。

要动态撤销持久端点,请使用下表中列出的适当方法或函数: