gpt4 book ai didi

sockets - PyZMQ ( ZeroMQ ) - 如何从 SUB-socket 获取订阅 key ?

转载 作者:行者123 更新时间:2023-12-03 11:51:04 25 4
gpt4 key购买 nike

我想在设置后获取订阅者的订阅 key ( SUB )套接字。

假设我有以下套接字:

import zmq
ctx = zmq.Context.instance()
sub_sock = ctx.socket(zmq.SUB)
sub_sock.bind("tcp://127.0.0.1:6667")
sub_sock.setsockopt(zmq.SUBSCRIBE, "foo1".encode('ascii'))

我想做的是这样的(伪代码):
sub_key = sub_sock.get_sub_key().decode("ascii")
sub_key = subkey[:-1] + "2" # "foo2"

# unsubscribe all keys
sub_sock.setsockopt(zmq.UNSUBSCRIBE, '')

# subscribe to new key
sub_sock.setsockopt(zmq.SUBSCRIBE, sub_key.encode('ascii'))

问题 :

但是,我找不到可以检索订户套接字 key 的函数。如何检索套接字的订阅 key ?

系统 :
  • Python 3.6
  • libzmq 版本:4.2.5
  • pyzmq 版本:17.0.0
  • 最佳答案

    How can I retrieve the socket's subscription key ( ... after it has been set ) ?



    是的, 一 jar , 但仅限于 PUB -side (实际上是 XPUB PUB -behaviour archetype 的克隆),如果已使用 .setsockopt( { XPUB_VERBOSE | XPUB_VERBOSER }, 1 ) 仔细配置方法以开始服务与 channel 相关的 (X)SUB -s 在这种特定模式下。

    因此,在极端需要的情况下(在 SUB 端完全丢失上下文或患有自己的订阅管理失忆的情况下),可以设置 XSUB 来实例化一个实用的 XPUB -带有此附加 .setsockopt( { XPUB_VERBOSE | XPUB_VERBOSER }, 1 ) 的实例配置, { .bind() | .connect() }从 Home-Base 到 Home-Base 的链接,并处理所有到达的 (X)SUB - 即时订阅详细信息。

    native API 文档发布了正确执行此操作的所有详细信息。

    一种从窃听中了解自己的订阅详细信息的独特方法,但可行。

    最后的评论:

    ZeroMQ 主题过滤器以更复杂的方式设计并针对速度进行了优化 (高吞吐量,低延迟) .它可以为每个 { .bind() | .connected() } 处理单位、数百、数千、数万个订阅。同行。

    这些设计愿望和对性能的关注是原因,没有这样的功能可以事后要求“图书管理员”查找所有“ 我自己的”订阅 key (无论是从不记得还是完全忘记)。

    人们也可能意识到,从 API v4.x 开始,ZeroMQ 原生处理开始管理 (X)PUB 上的主题过滤。 -side,虽然较旧的 API 版本报告此性能关键操作被推迟到每个 (X)SUB -side(s),以增加原始网络流量的累积量为代价,因为所有消息(是的,确实是所有消息)都来自 (X)PUB致所有 (X)SUB -s。有人在这里提到安全问题吗?
    # unsubscribe all keys                        // THIS WILL NOT FLY THAT WAY

    相同的推理支持“丢失”的 API 调用,要求“ 忘记我自己的所有订阅 ”,但是必须以一种一种方式或正确地明确取消订阅 .close() (X)SUB -side socket-instance,而是在绿场基础上重新实例化另一个,然后重新 { .bind() | .connect() }它回到基础设施,从而实现整体设定的目标。

    关于sockets - PyZMQ ( ZeroMQ ) - 如何从 SUB-socket 获取订阅 key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51074564/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com