跳到主要内容

配置队列

在事件代理上,队列既可以作为客户端发布消息的目的地,也可以作为客户端消费消息的端点.队列可用于点对点(PTP)消息传递环境,并且可以有主题订阅,以便发布到匹配主题的消息被传递到队列.有关队列的一般信息,请参阅主题端点和队列,有关深入信息,请参阅队列.

您也可以在 PubSub+ 事件门户中配置队列,并在启用运行时配置的情况下将更新推送到事件代理.有关更多信息,请参阅在事件门户中配置事件代理.

您可以将队列划分为分区,以确保在使用动态微服务的环境中,具有相似上下文的消息始终由相同的消费者处理.有关更多信息,请参阅配置分区队列.

本主题包括以下任务:

  • 创建队列
  • 向队列添加订阅
  • 配置高级队列选项

创建队列

要使用 PubSub+ 事件代理管理器创建队列,请执行以下步骤:

  1. 打开事件代理管理器.有关说明,请参阅 PubSub+ 事件代理管理器.

  2. 选择一个消息 VPN.

  3. 在左侧导航栏中选择 队列.

  4. 点击 + 队列.

    img

  5. 输入队列的名称,然后点击 创建.

  6. 为队列设置以下选项:

设置描述
入站指定是否可以将消息写入队列.
出站指定是否可以从队列中消费消息.
访问类型指定当多个消费者流绑定到队列时消息如何传递.
  • 独占指定一次只能有一个消费者接收消息,而其他消费者可以作为备用连接.只有首先绑定的消费者才能接收消息.如果第一个消费者断开连接,则第二个消费者接收数据,依此类推.独占队列始终按接收顺序传递消息.
  • 非独占指定可以将多个消费者绑定到队列,这使得负载均衡和消费者自动扩展成为可能.非独占队列可以是非分区的或分区的.
    • 对于非分区队列(分区数为零),每个消费者以轮询方式服务.如果连接失败,未确认的消息将传递给另一个消费者,并设置重新传递标志.这样,消息可以按顺序传递给消费者.
      | 非所有者权限| 指定除队列所有者之外的客户端应用程序的访问级别:
  • 无访问权限—禁止所有访问.
  • 只读—客户端对转盘到队列的消息具有只读访问权限.
  • 消费—客户端可以从队列中消费和删除消息.
  • 修改主题—客户端可以消费和删除消息,并修改分配给队列的主题或选择器.
  • 删除—客户端可以消费和删除消息,修改分配给队列的主题或选择器,并删除队列.| | 分区数| 指定队列的分区数.有关更多信息,请参阅配置分区队列.
    此设置仅在事件代理服务版本 10.4 及更高版本中可用,且访问类型设置为非独占时可用.| | 消息队列配额| 指定队列可以使用的最大消息转盘空间,以兆字节为单位.将消息队列配额设置为 0 可启用最后值队列功能并禁用端点配额检查.值为 0 仅允许通过删除端点上的旧消息来转盘最后一条接收到的消息.如果队列是分区的,则其每个分区都保存转盘到该分区的最后一条消息.有关更多信息,请参阅最后值队列.| | 所有者| 队列所有者对队列拥有完全无限制的权限.所有者可以消费、删除或修改队列中的主题.默认情况下,具有访问 PubSub+ 事件代理管理器权限的用户拥有所有权权限.您也可以将所有权授予客户端应用程序.在分配所有者之前,必须先禁用客户端对持久消息队列的访问.| | 非所有者权限| 指定除队列所有者之外的客户端应用程序的访问级别:
  • 无访问权限—禁止所有访问.
  • 只读—客户端对转盘到队列的消息具有只读访问权限.
  • 消费—客户端可以从队列中消费和删除消息.
  • 修改主题—客户端可以消费和删除消息,并修改分配给队列的主题或选择器.
  • 删除—客户端可以消费和删除消息,修改分配给队列的主题或选择器,并删除队列.| | 最大消费者数| 指定可以绑定到队列的最大消费者流数.|
  1. (可选)点击 显示高级设置,并为您的队列设置任何其他选项.有关更多信息,请参阅配置高级队列选项.
  2. 点击 应用.

向队列添加订阅

订阅定义了队列接收消息的主题.队列可以有多个主题订阅,以吸引发布的事件.有关更多信息,请参阅理解主题.

事件代理还支持负订阅,这可以从更大的订阅集中排除指定的主题.您可以通过在订阅开头添加感叹号 ! 来创建订阅异常.有关更多信息,请参阅订阅异常.

要向队列添加一个或多个主题订阅,请执行以下步骤:

  1. 打开事件代理管理器.有关说明,请参阅 PubSub+ 事件代理管理器.

  2. 选择一个消息 VPN.

  3. 在左侧导航栏中选择 队列.

  4. 点击队列的名称.

  5. 点击 订阅 选项卡.

  6. 点击 + 订阅.

  7. 输入您想要添加订阅的主题.

  8. 点击 创建.

订阅已添加到队列.

配置高级队列选项

队列具有定义队列在某些情况下如何行为的高级设置.这些选项包括:

设置描述
消息队列配额指定队列可以使用的最大消息转盘空间,以兆字节为单位.将消息队列配额设置为 0 可启用最后值队列功能并禁用端点配额检查.全局配额检查和消息 VPN 配额检查不受影响.值为 0 仅允许通过删除端点上的旧消息来转盘最后一条接收到的消息.如果队列是分区的,则其每个分区都保存转盘到该分区的最后一条消息.有关更多信息,请参阅最后值队列.
  • 警报阈值—指定控制何时为队列生成与消息转盘相关的事件的阈值.| | 所有者| 队列所有者对队列拥有完全无限制的权限.所有者可以消费、删除或修改队列中的主题.默认情况下,具有访问 PubSub+ 事件代理管理器权限的用户拥有所有权权限.您也可以将所有权授予客户端应用程序.在分配所有者之前,必须先禁用客户端对持久消息队列的访问.| | 重新传递| 指定如果消息在第一次尝试时未传递给消费者,则消息重新传递尝试的选项.
    禁用消息重新传递和启用延迟重新传递是受控可用性(CA)功能.请联系 Solace 以了解这些功能是否支持您的用例.
    重新传递有以下设置:

  • 永远尝试—指定队列尝试将消息传递给消费者,直到传递成功.这是默认设置.

  • 最大重新传递次数—指定队列尝试将消息传递给消费者的最大次数.此值仅在未选择 永远尝试 时有效.如果在指定的尝试次数后消息未成功传递,则消息被丢弃或移动到死消息队列(DMQ).

  • 延迟重新传递—指定队列是否在消息重新传递尝试之间等待.此选项默认处于禁用状态.
    | 拒绝低优先级消息限制| 指定超过此限制后不接受低优先级消息但允许高优先级消息的限制.启用前建议设置非零值的拒绝低优先级消息限制,以避免意外丢弃所有低优先级消息.

  • 警报阈值—指定控制何时为队列生成最大允许排队优先级消息数警报的阈值.|

  • 初始延迟—如果选择了 延迟重新传递,则指定第一次重新传递尝试前的延迟,以毫秒为单位.默认为 1000 毫秒(一秒).

  • 最大延迟—如果选择了 延迟重新传递 且乘数设置为大于 1.00 的值,则指定最大延迟,以毫秒为单位.| | 最大消费者数| 指定可以绑定到队列的最大消费者流数.

  • 警报阈值—指定控制何时为队列生成消费者流警报的阈值.| | 最大消息大小| 指定队列的最大消息大小,以字节为单位.| | 每个流的最大未确认已传递消息数| 指定队列每个流的最大未确认已传递消息数.在超过此最大未确认已传递消息数后,事件代理将停止向该流上的客户端传递消息,直到客户端确认已传递的消息.| | DMQ 名称| 此队列使用的死消息队列(DMQ)的名称.默认为 #DEAD_MSG_QUEUE.Solace 建议为每个需要 DMQ 的队列和主题端点使用单独的 DMQ,并将 DMQ 名称设置为队列名称,后跟 "_dmq",例如 MyQueue_dmq.
    DMQ 收集因达到 最大 TTL最大重新传递次数 而否则会被从队列中丢弃的未传递消息.
    只有在发布者指定消息是 DMQ 合格的,并且在相同的消息 VPN 上存在具有指定 DMQ 名称的队列时,消息才会被发送到 DMQ.有关更多信息,请参阅配置死消息队列.| | 启用客户端传递计数| 指定客户端应用程序是否可以查询从队列接收到的消息的传递计数.
    启用客户端传递计数是一个受控可用性(CA)功能.请联系 Solace 以了解该功能是否支持您的用例.| | 传递延迟| 指定消息到达队列与发送给消费者之间的延迟秒数.有关更多信息,请参阅延迟传递.默认为 0,或无延迟.| | 尊重消息优先级| 指定队列是否支持优先消息传递并首先传递高优先级消息.有关更多信息,请参阅消息优先级.| | 消息过期| 指定未传递给消费者的消息是否在消息生存时间(TTL)结束时过期.如果消息未被消费且其 TTL 时间到达,则消息被丢弃或移动到死消息队列(DMQ).消息过期有两个设置:

  • 尊重 TTL—指定队列是否对为队列或由消息发布者设置的 TTL 值采取行动.

  • 最大 TTL—指定队列在消息到达队列时应用于消息的 TTL.值为 0 表示队列不施加限制.
    消息还可以具有发布者提供的 TTL,这表示发布者认为消息有效的时长.这与端点的最大 TTL 不同,因为发布者 TTL 的过期从消息发布时开始,并且在消息通过网络时倒计时.如果消息既有发布者分配的 TTL,又有端点分配的最大 TTL,则事件代理在消息处于端点时使用这两个 TTL 值中的较小值.| | 重新传递| 指定如果消息在第一次尝试时未传递给消费者,则消息重新传递尝试的选项. 禁用消息重新传递和启用延迟重新传递是受控可用性(CA)功能.请联系 Solace 以了解这些功能是否支持您的用例. 重新传递有以下设置:

  • 永远尝试—指定队列尝试将消息传递给消费者,直到传递成功.这是默认设置.

  • 最大重新传递次数—指定队列尝试将消息传递给消费者的最大次数.此值仅在未选择 永远尝试 时有效.如果在指定的尝试次数后消息未成功传递,则消息被丢弃或移动到死消息队列(DMQ).

  • 延迟重新传递—指定队列是否在消息重新传递尝试之间等待.此选项默认处于禁用状态.

  • 乘数—如果选择了 延迟重新传递,则指定每个后续延迟的乘数.例如,如果 初始延迟 为 1000 毫秒(一秒),且乘数为 2.00,则队列在第二次重新传递尝试前等待两秒,在接下来的尝试前等待四秒,依此类推,直到达到 最大延迟.您可以设置 1.00 到 5.00 之间的值.

  • 初始延迟—如果选择了 延迟重新传递,则指定第一次重新传递尝试前的延迟,以毫秒为单位.默认为 1000 毫秒(一秒).

  • 最大延迟—如果选择了 延迟重新传递 且乘数设置为大于 1.00 的值,则指定最大延迟,以毫秒为单位.| | 在丢弃时向发送者拒绝消息| 指定何时以及如何在消息丢弃时将负面确认返回给发送客户端.

  • 静默—静默丢弃消息.

  • 通知发送者—将消息丢弃的负面确认返回给客户端,但不包括因队列禁用而丢弃的消息.

  • 通知发送者-包括关闭—将消息丢弃的负面确认返回给客户端,包括因队列禁用而丢弃的消息.| | 拒绝低优先级消息| 指定是否丢弃低优先级消息以防止拥塞场景.启用后,低优先级消息将与拒绝低优先级消息限制进行比较.队列只有在转盘的低优先级和高优先级消息总数超过为拒绝低优先级消息限制设置的值后,才能选择性地丢弃低优先级消息.启用前建议设置非零值的拒绝低优先级消息限制,以避免意外丢弃所有低优先级消息.| | 拒绝低优先级消息限制| 指定超过此限制后不接受低优先级消息但允许高优先级消息的限制.启用前建议设置非零值的拒绝低优先级消息限制,以避免意外丢弃所有低优先级消息.

  • 警报阈值—指定控制何时为队列生成最大允许排队优先级消息数警报的阈值.| | 消费者确认传播| 指定在活动复制消息 VPN 上收到的消费者确认是否传播到备用复制消息 VPN.配置了消费者确认传播的队列不能绑定桥接.|

要配置高级队列设置,请执行以下步骤:

  1. 打开事件代理管理器.有关说明,请参阅 PubSub+ 事件代理管理器.

  2. 选择一个消息 VPN.

  3. 在左侧导航栏中选择 队列.

  4. 点击队列的名称.

  5. 点击 编辑img.

  6. 点击 显示高级设置.

  7. (可选)要设置传递延迟,请在 传递延迟(秒) 字段中输入一个值.

  8. 配置您用例所需的设置.

  9. 完成队列配置后,点击 应用.