我们如何在一个结构中将不同主题的消息从发布者发送到订阅者,以及如何在订阅者中检索主题。
- C/C++ 代码示例
问: “我们如何在一个结构中将不同主题的消息从发布者发送到订阅者......?”
-sidepub
可以只发送,如下所示:
#include <nanomsg/nn.h>
#include <nanomsg/pubsub.h>
...
int pub = nn_socket (AF_SP, NN_PUB);
assert (pub >= 0);
...
int nbytes;
char *addr = "inproc://example";
nn_bind(pub, addr);
...
nbytes = nn_send (pub, "a_Topic_#1abcdefghijklmnopqr", 28);
assert(nbytes == 28);
nbytes = nn_send (pub, "a_Topic_#2abcdefghijklmnopqr", 28);
assert(nbytes == 28);
...
nn_freemsg (buf);
...
问: “......以及如何在订阅者中检索主题?”
基本上使用这个模型原理,sub
-side 必须首先订阅:
#include <nanomsg/nn.h>
#include <nanomsg/pubsub.h>
...
int sub = nn_socket (AF_SP, NN_SUB);
assert (sub >= 0);
...
int nbytes;
void *buf = NULL;
char *addr = "inproc://example";
nn_connect(sub, addr);
...
nn_setsockopt (sub, NN_SUB, NN_SUB_SUBSCRIBE, "a_Topic_#1", 10);
nn_setsockopt (sub, NN_SUB, NN_SUB_SUBSCRIBE, "a_Topic_#2", 10);
...
nbytes = nn_recv (sub, &buf, NN_MSG, 0);
assert (nbytes == 28);
nn_freemsg (buf);
...