That seems to have worked(except that publisher should be on heap not stack)...worth adding to the C++ example in the guide?
On Mon, Jan 14, 2013 at 10:50 PM, Mohit Jaggi <[email protected]> wrote: > 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 <[email protected]> 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 <[email protected]> >> 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 <[email protected]> >> wrote: >> >> >> >> On Jan 14, 2013, at 4:10 PM, Mohit Jaggi <[email protected]> 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 >> >> [email protected] >> >> http://lists.zeromq.org/mailman/listinfo/zeromq-dev >> >> >> > >> > >> > _______________________________________________ >> > zeromq-dev mailing list >> > [email protected] >> > http://lists.zeromq.org/mailman/listinfo/zeromq-dev >> > >> _______________________________________________ >> zeromq-dev mailing list >> [email protected] >> http://lists.zeromq.org/mailman/listinfo/zeromq-dev >> > >
_______________________________________________ zeromq-dev mailing list [email protected] http://lists.zeromq.org/mailman/listinfo/zeromq-dev
