aboutsummaryrefslogtreecommitdiffstats
path: root/protocol.html
diff options
context:
space:
mode:
authorjason2015-11-17 19:07:58 -0700
committerjason2015-11-17 19:07:58 -0700
commitbf4d466c75c00f3f8d92e0a8973900374f29e901 (patch)
tree30c24b1f7b4ccb31510a5cc1cecf060c1588d577 /protocol.html
parentd124748d368ad946ed3d605c04aa6a78780315c5 (diff)
downloadeventmq-bf4d466c75c00f3f8d92e0a8973900374f29e901.tar.gz
eventmq-bf4d466c75c00f3f8d92e0a8973900374f29e901.zip
update documentation
Diffstat (limited to 'protocol.html')
-rw-r--r--protocol.html57
1 files changed, 41 insertions, 16 deletions
diff --git a/protocol.html b/protocol.html
index 922f46e..6f003bd 100644
--- a/protocol.html
+++ b/protocol.html
@@ -30,7 +30,9 @@
30 30
31 31
32 32
33 <link rel="top" title="EventMQ 0 documentation" href="index.html"/> 33 <link rel="top" title="EventMQ 0 documentation" href="index.html"/>
34 <link rel="up" title="Contributing to EventMQ" href="contributing.html"/>
35 <link rel="prev" title="Contributing to EventMQ" href="contributing.html"/>
34 36
35 37
36 <script src="_static/js/modernizr.min.js"></script> 38 <script src="_static/js/modernizr.min.js"></script>
@@ -79,11 +81,25 @@
79 81
80 82
81 83
82 <ul> 84 <ul class="current">
83<li class="toctree-l1"><a class="reference internal" href="jobmanager.html"><code class="docutils literal"><span class="pre">jobmanager</span></code> &#8211; Job Manager</a></li> 85<li class="toctree-l1"><a class="reference internal" href="api.html">API Documentation</a></li>
84<li class="toctree-l1"><a class="reference internal" href="receiver.html"><code class="docutils literal"><span class="pre">receiver</span></code> &#8211; Receiver</a></li> 86<li class="toctree-l1 current"><a class="reference internal" href="contributing.html">Contributing to EventMQ</a><ul class="current">
85<li class="toctree-l1"><a class="reference internal" href="router.html"><code class="docutils literal"><span class="pre">router</span></code> &#8211; Router</a></li> 87<li class="toctree-l2 current"><a class="current reference internal" href="">EventMQ Protocol Specification</a><ul>
86<li class="toctree-l1"><a class="reference internal" href="sender.html"><code class="docutils literal"><span class="pre">sender</span></code> &#8211; Sender</a></li> 88<li class="toctree-l3"><a class="reference internal" href="#goals">Goals</a></li>
89<li class="toctree-l3"><a class="reference internal" href="#license">License</a></li>
90<li class="toctree-l3"><a class="reference internal" href="#language">Language</a></li>
91<li class="toctree-l3"><a class="reference internal" href="#architecture">Architecture</a><ul>
92<li class="toctree-l4"><a class="reference internal" href="#topology">Topology</a></li>
93<li class="toctree-l4"><a class="reference internal" href="#router-addressing">ROUTER Addressing</a></li>
94<li class="toctree-l4"><a class="reference internal" href="#emqp-client">eMQP / Client</a></li>
95<li class="toctree-l4"><a class="reference internal" href="#emqp-worker">eMQP / Worker</a></li>
96<li class="toctree-l4"><a class="reference internal" href="#heartbeating">Heartbeating</a></li>
97</ul>
98</li>
99</ul>
100</li>
101</ul>
102</li>
87</ul> 103</ul>
88 104
89 105
@@ -114,6 +130,8 @@
114 <ul class="wy-breadcrumbs"> 130 <ul class="wy-breadcrumbs">
115 <li><a href="index.html">Docs</a> &raquo;</li> 131 <li><a href="index.html">Docs</a> &raquo;</li>
116 132
133 <li><a href="contributing.html">Contributing to EventMQ</a> &raquo;</li>
134
117 <li>EventMQ Protocol Specification</li> 135 <li>EventMQ Protocol Specification</li>
118 <li class="wy-breadcrumbs-aside"> 136 <li class="wy-breadcrumbs-aside">
119 137
@@ -131,9 +149,8 @@
131 <div class="section" id="eventmq-protocol-specification"> 149 <div class="section" id="eventmq-protocol-specification">
132<h1>EventMQ Protocol Specification<a class="headerlink" href="#eventmq-protocol-specification" title="Permalink to this headline">¶</a></h1> 150<h1>EventMQ Protocol Specification<a class="headerlink" href="#eventmq-protocol-specification" title="Permalink to this headline">¶</a></h1>
133<p><em>The status of this document is alpha and subject to heavy change</em></p> 151<p><em>The status of this document is alpha and subject to heavy change</em></p>
134</div>
135<div class="section" id="goals"> 152<div class="section" id="goals">
136<h1>Goals<a class="headerlink" href="#goals" title="Permalink to this headline">¶</a></h1> 153<h2>Goals<a class="headerlink" href="#goals" title="Permalink to this headline">¶</a></h2>
137<p>The EventMQ Protocol (eMQP) defines a reliable service-oriented request-reply and pub-sub dialog between a set of clients, a broker, and a set of workers. This goal is to</p> 154<p>The EventMQ Protocol (eMQP) defines a reliable service-oriented request-reply and pub-sub dialog between a set of clients, a broker, and a set of workers. This goal is to</p>
138<p>The goals are to:</p> 155<p>The goals are to:</p>
139<blockquote> 156<blockquote>
@@ -146,32 +163,32 @@
146</div></blockquote> 163</div></blockquote>
147</div> 164</div>
148<div class="section" id="license"> 165<div class="section" id="license">
149<h1>License<a class="headerlink" href="#license" title="Permalink to this headline">¶</a></h1> 166<h2>License<a class="headerlink" href="#license" title="Permalink to this headline">¶</a></h2>
150<p>This Specification is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.</p> 167<p>This Specification is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.</p>
151<p>This Specification is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.</p> 168<p>This Specification is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.</p>
152</div> 169</div>
153<div class="section" id="language"> 170<div class="section" id="language">
154<h1>Language<a class="headerlink" href="#language" title="Permalink to this headline">¶</a></h1> 171<h2>Language<a class="headerlink" href="#language" title="Permalink to this headline">¶</a></h2>
155<p>The key words &#8220;MUST&#8221;, &#8220;MUST NOT&#8221;, &#8220;REQUIRED&#8221;, &#8220;SHALL&#8221;, &#8220;SHALL NOT&#8221;, &#8220;SHOULD&#8221;, &#8220;SHOULD NOT&#8221;, &#8220;RECOMMENDED&#8221;, &#8220;MAY&#8221;, and &#8220;OPTIONAL&#8221; in this document are to be interpreted as described in RFC 2119[[1](<a class="reference external" href="http://tools.ietf.org/html/rfc2119">http://tools.ietf.org/html/rfc2119</a>)].</p> 172<p>The key words &#8220;MUST&#8221;, &#8220;MUST NOT&#8221;, &#8220;REQUIRED&#8221;, &#8220;SHALL&#8221;, &#8220;SHALL NOT&#8221;, &#8220;SHOULD&#8221;, &#8220;SHOULD NOT&#8221;, &#8220;RECOMMENDED&#8221;, &#8220;MAY&#8221;, and &#8220;OPTIONAL&#8221; in this document are to be interpreted as described in RFC 2119[[1](<a class="reference external" href="http://tools.ietf.org/html/rfc2119">http://tools.ietf.org/html/rfc2119</a>)].</p>
156</div> 173</div>
157<div class="section" id="architecture"> 174<div class="section" id="architecture">
158<h1>Architecture<a class="headerlink" href="#architecture" title="Permalink to this headline">¶</a></h1> 175<h2>Architecture<a class="headerlink" href="#architecture" title="Permalink to this headline">¶</a></h2>
159<p>insert pretty picture here</p> 176<p>insert pretty picture here</p>
160<div class="section" id="topology"> 177<div class="section" id="topology">
161<h2>Topology<a class="headerlink" href="#topology" title="Permalink to this headline">¶</a></h2> 178<h3>Topology<a class="headerlink" href="#topology" title="Permalink to this headline">¶</a></h3>
162<p>eMQP connects a set of client applications (e.g. web servers), a broker, and a pool of workers. Clients connect to the broker as well as the workers.</p> 179<p>eMQP connects a set of client applications (e.g. web servers), a broker, and a pool of workers. Clients connect to the broker as well as the workers.</p>
163<p>&#8216;Clients&#8217; is defined as application issuing requests and &#8216;workers&#8217; as applications that process these requests. (Workers consist of a <cite>JobManager</cite> and a pool of <cite>Worker</cite> resources where the job executes.)</p> 180<p>&#8216;Clients&#8217; is defined as application issuing requests and &#8216;workers&#8217; as applications that process these requests. (Workers consist of a <cite>JobManager</cite> and a pool of <cite>Worker</cite> resources where the job executes.)</p>
164<p>The EventMQ broker handles a set of named queues. The broker SHOULD serve clients on a fair request and MAY deliver requests to workers on any basis, including 0MQ&#8217;s built-in round robin or least-recently used.</p> 181<p>The EventMQ broker handles a set of named queues. The broker SHOULD serve clients on a fair request and MAY deliver requests to workers on any basis, including 0MQ&#8217;s built-in round robin or least-recently used.</p>
165</div> 182</div>
166<div class="section" id="router-addressing"> 183<div class="section" id="router-addressing">
167<h2>ROUTER Addressing<a class="headerlink" href="#router-addressing" title="Permalink to this headline">¶</a></h2> 184<h3>ROUTER Addressing<a class="headerlink" href="#router-addressing" title="Permalink to this headline">¶</a></h3>
168<p>In the case of request-reply, the broker MUST use a ROUTER socket to accept requests from both clients and workers. The broker MAY use a seperate socket implementing a subset of eMQP, or MAY use a single socket implementing all of eMQP.</p> 185<p>In the case of request-reply, the broker MUST use a ROUTER socket to accept requests from both clients and workers. The broker MAY use a seperate socket implementing a subset of eMQP, or MAY use a single socket implementing all of eMQP.</p>
169<p>From the 0MQ manual[[2](<a class="reference external" href="http://api.zeromq.org/master:zmq-socket">http://api.zeromq.org/master:zmq-socket</a>)] 186<p>From the 0MQ manual[[2](<a class="reference external" href="http://api.zeromq.org/master:zmq-socket">http://api.zeromq.org/master:zmq-socket</a>)]
170&gt; When receiving messages a ROUTER socket shall prepend a message part containing the identity of the originating peer to the message before passing it to the application. When sending messages a ROUTER socket shall remove the first part of the message and use it to determine the identity of the peer the message shall be routed to.</p> 187&gt; When receiving messages a ROUTER socket shall prepend a message part containing the identity of the originating peer to the message before passing it to the application. When sending messages a ROUTER socket shall remove the first part of the message and use it to determine the identity of the peer the message shall be routed to.</p>
171<p>This extra frame is not shown in the specifications below.</p> 188<p>This extra frame is not shown in the specifications below.</p>
172</div> 189</div>
173<div class="section" id="emqp-client"> 190<div class="section" id="emqp-client">
174<h2>eMQP / Client<a class="headerlink" href="#emqp-client" title="Permalink to this headline">¶</a></h2> 191<h3>eMQP / Client<a class="headerlink" href="#emqp-client" title="Permalink to this headline">¶</a></h3>
175<p>A <strong>REQUEST</strong> command consists of 7-frame multipart message, formatted as follows.</p> 192<p>A <strong>REQUEST</strong> command consists of 7-frame multipart message, formatted as follows.</p>
176<table border="1" class="docutils"> 193<table border="1" class="docutils">
177<colgroup> 194<colgroup>
@@ -218,7 +235,7 @@
218</table> 235</table>
219</div> 236</div>
220<div class="section" id="emqp-worker"> 237<div class="section" id="emqp-worker">
221<h2>eMQP / Worker<a class="headerlink" href="#emqp-worker" title="Permalink to this headline">¶</a></h2> 238<h3>eMQP / Worker<a class="headerlink" href="#emqp-worker" title="Permalink to this headline">¶</a></h3>
222<p>An <strong>INFORM</strong> command consists of a 5-frame multipart message, formatted as follows.</p> 239<p>An <strong>INFORM</strong> command consists of a 5-frame multipart message, formatted as follows.</p>
223<table border="1" class="docutils"> 240<table border="1" class="docutils">
224<colgroup> 241<colgroup>
@@ -389,7 +406,7 @@
389</table> 406</table>
390</div> 407</div>
391<div class="section" id="heartbeating"> 408<div class="section" id="heartbeating">
392<h2>Heartbeating<a class="headerlink" href="#heartbeating" title="Permalink to this headline">¶</a></h2> 409<h3>Heartbeating<a class="headerlink" href="#heartbeating" title="Permalink to this headline">¶</a></h3>
393<blockquote> 410<blockquote>
394<div><ul class="simple"> 411<div><ul class="simple">
395<li>HEARTBEAT commands are valid at any time after an INFORM command</li> 412<li>HEARTBEAT commands are valid at any time after an INFORM command</li>
@@ -401,12 +418,20 @@
401</div></blockquote> 418</div></blockquote>
402</div> 419</div>
403</div> 420</div>
421</div>
404 422
405 423
406 </div> 424 </div>
407 </div> 425 </div>
408 <footer> 426 <footer>
409 427
428 <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
429
430
431 <a href="contributing.html" class="btn btn-neutral" title="Contributing to EventMQ" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a>
432
433 </div>
434
410 435
411 <hr/> 436 <hr/>
412 437