跳到主要内容

定义端点属性

当客户端应用程序动态创建端点时,用于定义该端点的属性从以下来源获取(按呈现顺序):

  1. 通过端点配置 API 函数或方法传入的端点属性和/或配置标志。
    在动态创建持久端点时,客户端只能提供有限的端点属性和/或配置标志(如 客户端可配置的端点属性 中列出的内容)(参阅 使用 PubSub+ 消息 API 配置持久端点)。

  2. 用于 CLI 配置端点的属性。
    客户端创建的端点将被赋予与 CLI 配置端点相同的端点属性;除非客户端传入了端点属性和/或配置标志——如上所述——这些属性将优先于其他属性。这些 CLI 配置的端点属性可以通过以下两种机制获取:

    • 队列和主题端点的 name-filter 允许它们根据端点名称匹配端点模板。这使得客户端创建的队列或主题端点能够动态地从指定的端点模板中复制属性。有关更多信息,请参阅 设置名称过滤器以匹配队列名称设置名称过滤器以匹配主题端点名称。此功能仅适用于 Solace PubSub+ 事件代理 9.4.0 及更高版本。
    • 客户端配置文件的 copy-from-template-on-create 命令: 可用于将自定义值从端点模板复制到客户端创建的端点。然而,如果没有明确设置要复制的自定义端点模板,则使用 CLI 配置端点的系统默认值。有关此主题的更多信息,请参阅 为客户端创建的端点配置初始值

    对于 9.4.0 版本之前的事件代理,可以使用 copy-from-on-create 命令指定具有自定义值的 CLI 配置队列或主题端点,这些值将应用于任何新的客户端创建的端点。


客户端可配置的端点属性

在创建持久队列或主题端点时,客户端应用程序可以通过端点属性和/或配置标志(通过端点配置 API 函数或方法传入)配置以下端点参数:

  • 访问类型(独占或非独占) — 决定当多个保证消息流绑定到队列端点时的行为。(只有队列可以有多个流绑定。)

    • 独占 — 多个消费者流可以绑定到队列(最多 1000 个),但所有绑定流中只有一个流能够接收消息(即,只有一个流可以处于活动状态)。首先绑定到队列的流可以消费消息,当该流断开连接时,下一个最早绑定的流变为活动状态并开始接收消息,依此类推。
    • 非独占 — 所有绑定的消费者流都可以接收消息。当多个流绑定到非独占队列时,它们将以轮询方式接收消息。
  • 最大消息大小 — 端点中存储的单条消息的最大大小(以字节为单位)。如果消息大小超过此值,该消息不会被排队到端点。

  • 消息丢弃行为 — 指定持久端点如何处理因以下条件导致的入站消息丢弃。(此属性不影响端点因其他原因处理消息丢弃的方式。)

    • 发布的消息导致端点配置的消息配额被超出
    • 发布的消息超过端点允许的最大消息大小
    • 客户端发布到其已订阅的主题,并且存在一个带有“本地禁用”功能的活动流
    • (仅限队列)消息直接发布到队列,但队列已关闭

默认情况下,消息丢弃行为属性对队列启用,对主题端点不启用。

如果端点的消息丢弃行为属性已启用,由于上述条件之一或多个导致无法存储消息,该消息将被丢弃,并向发送者返回负面确认(即“NACK”)。在这种情况下,该消息不能被存储到任何其他队列或主题端点(无论这些端点是否启用了消息丢弃行为属性)。

只有当消息最初是以非持久化或持久化传输模式发布时,才会向客户端发送 NACK。如果消息是以直接传输模式发布的,但由于主题匹配被更改为非持久化,然后被丢弃,则不会向发送者返回 NACK。处理 NACK 的责任在于发布应用程序,而不是消息 API。PubSub+ 消息 API 不会重新发送被 NACK 的消息。

如果端点的消息丢弃行为属性未启用,并且遇到上述条件之一或多个,端点将“静默”丢弃入站消息(即,丢弃消息但向发送者返回确认)。在这种情况下,该消息可以被其他端点存储——如果它们没有遇到上述列出的任何条件。

消息丢弃行为属性还影响事务会话的行为。如果向发送者返回确认,则事务会话提交成功。如果向发送者返回 NACK,则提交失败。有关企业级消息 API 的更多信息,请参阅使用本地事务。

  • 最大消息重试次数 — 指定队列尝试向客户端重新投递消息的最大次数。如果给定消息的重试次数超过最大消息重试值,该消息将被丢弃,或者,如果事件代理上配置了死信队列(DMQ),则该消息将被移除并放入 DMQ。(有关 DMQ 和使消息符合 DMQ 资格的信息,请参阅死信队列资格。)

有效范围是 0 到 255。值为 0 表示无限重试,这是默认值。

  • 权限 — 除所有者(即配置端点的客户端或管理员)之外的客户端在端点上的权限级别。所有者始终拥有最高权限级别。可以分配以下权限级别,从高到低依次为:

    • 删除 — 客户端拥有修改主题的权限,并能够删除端点。
    • 修改主题 — 客户端拥有消费权限,并能够更改吸引消息到主题端点的主题订阅。
    • 消费 — 客户端可以读取并消费端点中的消息。当客户端消费消息时,消息将被确认,随后从端点中移除。
    • 只读 — 客户端可以读取消息,但不能消费它们。
    • — 除所有者之外,没有其他客户端可以访问端点。
  • 配额 — 端点允许的最大消息存储磁盘空间量(以兆字节为单位)。如果超出此配额,消息将无法被排队到端点。这提供了负载均衡功能;然而,消息可能会无序地投递给消费客户端。

  • 尊重消息 TTL — 指定端点是否识别已发布消息上设置的生存时间(TTL)资格标志。如果识别消息 TTL,则过期的消息可以自动从端点移除。有关发布消息时设置 TTL 资格的信息,请参阅生存时间。