gpt4 book ai didi

在发布者中创建主题 (ZeroMQ)

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

我一直在为 PUB-SUB ZeroMQ 系统(用 C 语言)编写代码,该系统有一个发布者和多个订阅者。在客户端代码上,我必须根据过滤器订阅一个主题,如下所示:

(...)
void *context = zmq_ctx_new ();
void *subscriber = zmq_socket (context, ZMQ_SUB);
int rc = zmq_connect (subscriber, "tcp://localhost:5555");

char *filter = (argc > 1)? argv [1]: "10001 "; // example of a filter
rc = zmq_setsockopt (subscriber, ZMQ_SUBSCRIBE, filter, strlen (filter));
(...)

但是,查看发布者的代码示例(见 ZeroMQ 的文档),我没有看到任何创建主题的行:

(...)
void *context = zmq_ctx_new ();
void *publisher = zmq_socket (context, ZMQ_PUB);
int rc = zmq_bind (publisher, "tcp://*:5556");

while (1) {
(...)
char update [20];
sprintf (update, "%05d %d %d", zipcode, temperature, relhumidity);
s_send (publisher, update);
(...)

消息只是简单发送,没有指定主题。这怎么可能?

在 python 版本中,我在发布者代码中看到过:

socket.send_string("%d %d" % (topic, number))

但我在 C 中没有见过这样的东西。

最佳答案

欢迎来到 ZeroMQ Zen-of-Zero。

消息的所有字节都被视为主题,订阅者端指定的“主题过滤”对一组简单且简单的字节匹配进行操作订阅主题与消息的左 n 字节。

那些匹配任何记录主题的消息被视为要传递的消息,那些不匹配任何一个的消息都不会被视为要传递的消息(除非设置了反向匹配选项)

关于在发布者中创建主题 (ZeroMQ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57838397/

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