[zeromq-dev] xpub and xsub example
Mohit Jaggi
mohitjaggi at gmail.com
Tue Jan 15 07:50:56 CET 2013
Thanks....Based on Figure 13 in the guide, I guess I would do the following:
static void *pubsub_proxy_thread(void *arg){
zmq_proxy(g_xsub, g_xpub, NULL);
}
int global_init() {
pthread_t t;
try {
...
g_xpub.bind("tcp://*:7779"); //subscribers connect here
g_xsub.bind("inproc://xsub_sock"); //publishers connect here
assert(0 == pthread_create(&t, NULL, nbapi_pubsub_proxy_thread, NULL));
}
catch(const exception& e) {
cerr << "Exception: " << e.what() << endl;
return -1;
}
return 0;
}
/*
*
*/
__thread *tls_publisher;
int thread_init() {
try {
socket_t publisher(g_ctx, ZMQ_PUB);
publisher.connect("inproc://xsub_sock");
tls_publisher = &publisher; //every thread uses this in thread local
storage to publish messages
}
catch(const exception& e) {
cerr << "Exception: " << e.what() << endl;
return -1;
}
return 0;
}
On Mon, Jan 14, 2013 at 2:55 PM, Pieter Hintjens <ph at imatix.com> wrote:
> From https://github.com/imatix/zguide/blob/master/examples/C/lvcache.c:
>
> int main (void)
> {
> zctx_t *context = zctx_new ();
> void *frontend = zsocket_new (context, ZMQ_SUB);
> zsocket_bind (frontend, "tcp://*:5557");
> void *backend = zsocket_new (context, ZMQ_XPUB);
> zsocket_bind (backend, "tcp://*:5558");
>
>
>
>
> On Mon, Jan 14, 2013 at 11:39 PM, Mohit Jaggi <mohitjaggi at gmail.com>
> wrote:
> > Thanks Charles(new to IRC, thanks for the advice!) and Peter. The example
> > you pointed out does use XPUB/XSUB. Am I missing something?
> >
> >
> > On Mon, Jan 14, 2013 at 2:25 PM, Charles Remes <lists at chuckremes.com>
> wrote:
> >>
> >> On Jan 14, 2013, at 4:10 PM, Mohit Jaggi <mohitjaggi at gmail.com> wrote:
> >>
> >> Hi All,
> >> I am looking for examples of xpub and xsub. My use case is that multiple
> >> threads in a process produce data that needs to be published over a TCP
> >> socket. I was thinking of letting them call "send" but it seems that
> that is
> >> not thread-safe. From the guide, it appears I can use inproc+xpub socket
> >> from producers to a proxy and let subscribers connect over TCP/xsub.
> >> However, there is no example code.
> >>
> >>
> >> I answered your question on irc. When asking a question, you should
> stick
> >> around for more than 5m to get an answer.
> >>
> >> Create a forwarder device that all of your PUB sockets connect to. All
> SUB
> >> sockets should then subscribe to that forwarder. You do *not* need to
> mess
> >> with XPUB and XSUB sockets.
> >>
> >> See here:
> >>
> >> http://api.zeromq.org/3-2:zmq-proxy
> >>
> >> and
> >>
> >> http://zguide.zeromq.org/page:all#Intermediaries-and-Proxies
> >>
> >> cr
> >>
> >>
> >> _______________________________________________
> >> zeromq-dev mailing list
> >> zeromq-dev at lists.zeromq.org
> >> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
> >>
> >
> >
> > _______________________________________________
> > zeromq-dev mailing list
> > zeromq-dev at lists.zeromq.org
> > http://lists.zeromq.org/mailman/listinfo/zeromq-dev
> >
> _______________________________________________
> zeromq-dev mailing list
> zeromq-dev at lists.zeromq.org
> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.zeromq.org/pipermail/zeromq-dev/attachments/20130114/4ac884db/attachment.htm>
More information about the zeromq-dev
mailing list