<html><head><meta http-equiv="Content-Type" content="text/html charset=iso-8859-1"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">I'll paste my response from IRC here since it is relevant and I'll add a few more thoughts.<div><br></div><div><div id="G9YQA4LM8M4" class="envelope" style="padding: 1px 5px; margin-bottom: 3px; font-family: 'Lucida Grande'; background-color: rgb(255, 255, 255); "><a href="member:cremes" title="cremes@c-24-14-2-179.hsd1.il.comcast.net" class="member self" style="font-weight: bold; color: rgb(170, 34, 17); text-decoration: none !important; margin-right: 0.5ex; white-space: nowrap; ">cremes</a><span class="hidden" style="position: fixed; top: -900px; left: -900px; ">:</span><span class="message" style="word-wrap: break-word; -webkit-line-break: after-white-space; -webkit-nbsp-mode: space; "><a href="member:cosmoharrigan_" class="member" style="color: inherit; text-decoration: none !important; ">cosmoharrigan_</a>: how is the response sent back via the callback? If it's via that single DEALER socket and the callback runs in another thread, you need to protect the socket with a mutex.</span></div><div id="SMJB3MM8M4" class="envelope" style="padding: 1px 5px; margin-bottom: 3px; font-family: 'Lucida Grande'; background-color: rgb(255, 255, 255); "><span class="timestamp hidden" style="position: fixed; top: -900px; left: -900px; display: block; margin-top: 0px; margin-left: 5px; float: right; font-size: 11px; color: rgb(136, 136, 136); word-wrap: normal; ">[</span><span class="timestamp" style="display: block; margin-top: 0px; margin-left: 5px; float: right; font-size: 11px; color: rgb(136, 136, 136); word-wrap: normal; ">3:46pm</span><span class="timestamp hidden" style="position: fixed; top: -900px; left: -900px; display: block; margin-top: 0px; margin-left: 5px; float: right; font-size: 11px; color: rgb(136, 136, 136); word-wrap: normal; ">]</span><a href="member:cremes" title="cremes@c-24-14-2-179.hsd1.il.comcast.net" class="member self" style="font-weight: bold; color: rgb(170, 34, 17); text-decoration: none !important; margin-right: 0.5ex; white-space: nowrap; ">cremes</a><span class="hidden" style="position: fixed; top: -900px; left: -900px; ">:</span><span class="message" style="word-wrap: break-word; -webkit-line-break: after-white-space; -webkit-nbsp-mode: space; ">Best to just give each thread its own socket. It's a cleaner design plus it let's you push thread & lock management into zeromq.</span></div><div><span class="message" style="word-wrap: break-word; -webkit-line-break: after-white-space; -webkit-nbsp-mode: space; "><br></span></div><div>If the reply from the callback needs to be routed back to the client, you should continue to use DEALER(client) <-> ROUTER (broker) <-> DEALER (worker). In this case there is a single worker but the message passing works exactly the same.</div><div><br></div><div>cr</div><div><span class="message" style="word-wrap: break-word; -webkit-line-break: after-white-space; -webkit-nbsp-mode: space; "><br></span></div><div><div>On Nov 6, 2013, at 3:43 PM, Cosmo Harrigan <<a href="mailto:cosmo.harrigan@singularityu.org">cosmo.harrigan@singularityu.org</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div dir="ltr">Hi,<div><br></div><div>I want to implement a design similar to the Request-Reply Broker from the zguide (<a href="https://raw.github.com/imatix/zguide/master/images/fig17.png">https://raw.github.com/imatix/zguide/master/images/fig17.png</a>) but instead of having multiple workers running ahead of time, I want to have one worker that receives all the requests, and spawns asynchronous operations (tasks) to handle them and send the responses.</div>
<div><br></div><div>What would be the proper combination of socket types to achieve this?</div><div><br></div><div>Thanks,</div><div>Cosmo Harrigan</div></div>
_______________________________________________<br>zeromq-dev mailing list<br><a href="mailto:zeromq-dev@lists.zeromq.org">zeromq-dev@lists.zeromq.org</a><br>http://lists.zeromq.org/mailman/listinfo/zeromq-dev<br></blockquote></div><br></div></body></html>