diff options
Diffstat (limited to 'protocol.html')
| -rw-r--r-- | protocol.html | 275 |
1 files changed, 169 insertions, 106 deletions
diff --git a/protocol.html b/protocol.html index 274f8d1..828731e 100644 --- a/protocol.html +++ b/protocol.html | |||
| @@ -60,7 +60,7 @@ | |||
| 60 | 60 | ||
| 61 | 61 | ||
| 62 | <div class="version"> | 62 | <div class="version"> |
| 63 | 0.2.1 | 63 | 0.2.6.2 |
| 64 | </div> | 64 | </div> |
| 65 | 65 | ||
| 66 | 66 | ||
| @@ -97,9 +97,10 @@ | |||
| 97 | <li class="toctree-l4"><a class="reference internal" href="#emqp-scheduler">eMQP / Scheduler</a></li> | 97 | <li class="toctree-l4"><a class="reference internal" href="#emqp-scheduler">eMQP / Scheduler</a></li> |
| 98 | <li class="toctree-l4"><a class="reference internal" href="#emqp-worker">eMQP / Worker</a></li> | 98 | <li class="toctree-l4"><a class="reference internal" href="#emqp-worker">eMQP / Worker</a></li> |
| 99 | <li class="toctree-l4"><a class="reference internal" href="#heartbeating">Heartbeating</a></li> | 99 | <li class="toctree-l4"><a class="reference internal" href="#heartbeating">Heartbeating</a></li> |
| 100 | <li class="toctree-l4"><a class="reference internal" href="#request-headers">REQUEST Headers</a></li> | 100 | <li class="toctree-l4"><a class="reference internal" href="#headers">Headers</a></li> |
| 101 | </ul> | 101 | </ul> |
| 102 | </li> | 102 | </li> |
| 103 | <li class="toctree-l3"><a class="reference internal" href="#disconnect-and-kbai">DISCONNECT and KBAI</a></li> | ||
| 103 | </ul> | 104 | </ul> |
| 104 | </li> | 105 | </li> |
| 105 | <li class="toctree-l2"><a class="reference external" href="https://github.com/enderlabs/eventmq">Source Code</a></li> | 106 | <li class="toctree-l2"><a class="reference external" href="https://github.com/enderlabs/eventmq">Source Code</a></li> |
| @@ -157,12 +158,12 @@ | |||
| 157 | <p><em>The status of this document is alpha and subject to heavy change</em></p> | 158 | <p><em>The status of this document is alpha and subject to heavy change</em></p> |
| 158 | <div class="section" id="goals"> | 159 | <div class="section" id="goals"> |
| 159 | <h2>Goals<a class="headerlink" href="#goals" title="Permalink to this headline">¶</a></h2> | 160 | <h2>Goals<a class="headerlink" href="#goals" title="Permalink to this headline">¶</a></h2> |
| 160 | <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> | 161 | <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.</p> |
| 161 | <p>The goals are to:</p> | 162 | <p>The goals are to:</p> |
| 162 | <blockquote> | 163 | <blockquote> |
| 163 | <div><ul class="simple"> | 164 | <div><ul class="simple"> |
| 164 | <li>Specify a protocol to follow when implementing a component to EventMQ.</li> | 165 | <li>Specify a protocol to follow when implementing a component to EventMQ.</li> |
| 165 | <li>Allow requests to be routed to workers by an abstracted service name.</li> | 166 | <li>Allow requests to be routed to workers by an abstracted service name (named queues).</li> |
| 166 | <li>Detect disconnected peers through heartbeating.</li> | 167 | <li>Detect disconnected peers through heartbeating.</li> |
| 167 | <li>Allow for message tracing and debugging.</li> | 168 | <li>Allow for message tracing and debugging.</li> |
| 168 | </ul> | 169 | </ul> |
| @@ -231,15 +232,12 @@ | |||
| 231 | </tr> | 232 | </tr> |
| 232 | </tbody> | 233 | </tbody> |
| 233 | </table> | 234 | </table> |
| 234 | </div> | 235 | <p>A <strong>REPLY</strong> frame consists of a 5-frame multipart message, formatted as follows.</p> |
| 235 | <div class="section" id="emqp-client"> | ||
| 236 | <h3>eMQP / Client<a class="headerlink" href="#emqp-client" title="Permalink to this headline">¶</a></h3> | ||
| 237 | <p>A <strong>REQUEST</strong> command consists of a 7-frame multipart message, formatted as follows.</p> | ||
| 238 | <table border="1" class="docutils"> | 236 | <table border="1" class="docutils"> |
| 239 | <colgroup> | 237 | <colgroup> |
| 240 | <col width="8%" /> | 238 | <col width="13%" /> |
| 241 | <col width="20%" /> | 239 | <col width="31%" /> |
| 242 | <col width="72%" /> | 240 | <col width="56%" /> |
| 243 | </colgroup> | 241 | </colgroup> |
| 244 | <thead valign="bottom"> | 242 | <thead valign="bottom"> |
| 245 | <tr class="row-odd"><th class="head">FRAME</th> | 243 | <tr class="row-odd"><th class="head">FRAME</th> |
| @@ -257,7 +255,7 @@ | |||
| 257 | <td>Protocol version</td> | 255 | <td>Protocol version</td> |
| 258 | </tr> | 256 | </tr> |
| 259 | <tr class="row-even"><td>2</td> | 257 | <tr class="row-even"><td>2</td> |
| 260 | <td>REQUEST</td> | 258 | <td>REPLY</td> |
| 261 | <td>command</td> | 259 | <td>command</td> |
| 262 | </tr> | 260 | </tr> |
| 263 | <tr class="row-odd"><td>3</td> | 261 | <tr class="row-odd"><td>3</td> |
| @@ -265,25 +263,17 @@ | |||
| 265 | <td>A unique id for the msg</td> | 263 | <td>A unique id for the msg</td> |
| 266 | </tr> | 264 | </tr> |
| 267 | <tr class="row-even"><td>4</td> | 265 | <tr class="row-even"><td>4</td> |
| 268 | <td>_QUEUE_NAME_</td> | ||
| 269 | <td>the name of the queue the request should be sent to</td> | ||
| 270 | </tr> | ||
| 271 | <tr class="row-odd"><td>5</td> | ||
| 272 | <td>_HEADERS_</td> | ||
| 273 | <td>dictionary of headers. can be an empty set</td> | ||
| 274 | </tr> | ||
| 275 | <tr class="row-even"><td>6</td> | ||
| 276 | <td>_MSG_</td> | 266 | <td>_MSG_</td> |
| 277 | <td>The message to send</td> | 267 | <td>The reply to respond with</td> |
| 278 | </tr> | 268 | </tr> |
| 279 | </tbody> | 269 | </tbody> |
| 280 | </table> | 270 | </table> |
| 281 | <p>A <strong>PUBLISH</strong> command consists of a 7-frame multipart messag, formatted as follows.</p> | 271 | <p>A <strong>HEARTBEAT</strong> frame consists of a</p> |
| 282 | <table border="1" class="docutils"> | 272 | <table border="1" class="docutils"> |
| 283 | <colgroup> | 273 | <colgroup> |
| 284 | <col width="7%" /> | 274 | <col width="14%" /> |
| 285 | <col width="17%" /> | 275 | <col width="33%" /> |
| 286 | <col width="75%" /> | 276 | <col width="53%" /> |
| 287 | </colgroup> | 277 | </colgroup> |
| 288 | <thead valign="bottom"> | 278 | <thead valign="bottom"> |
| 289 | <tr class="row-odd"><th class="head">FRAME</th> | 279 | <tr class="row-odd"><th class="head">FRAME</th> |
| @@ -301,7 +291,7 @@ | |||
| 301 | <td>Protocol version</td> | 291 | <td>Protocol version</td> |
| 302 | </tr> | 292 | </tr> |
| 303 | <tr class="row-even"><td>2</td> | 293 | <tr class="row-even"><td>2</td> |
| 304 | <td>PUBLISH</td> | 294 | <td>HEARTBEAT</td> |
| 305 | <td>command</td> | 295 | <td>command</td> |
| 306 | </tr> | 296 | </tr> |
| 307 | <tr class="row-odd"><td>3</td> | 297 | <tr class="row-odd"><td>3</td> |
| @@ -309,25 +299,17 @@ | |||
| 309 | <td>A unique id for the msg</td> | 299 | <td>A unique id for the msg</td> |
| 310 | </tr> | 300 | </tr> |
| 311 | <tr class="row-even"><td>4</td> | 301 | <tr class="row-even"><td>4</td> |
| 312 | <td>_TOPIC_NAME_</td> | 302 | <td>_UNIX_TS_</td> |
| 313 | <td>the name of the topic this message should be published across</td> | 303 | <td>A unix timestamp</td> |
| 314 | </tr> | ||
| 315 | <tr class="row-odd"><td>5</td> | ||
| 316 | <td>_HEADERS_</td> | ||
| 317 | <td>csv list of headers</td> | ||
| 318 | </tr> | ||
| 319 | <tr class="row-even"><td>6</td> | ||
| 320 | <td>_MSG_</td> | ||
| 321 | <td>The message to send</td> | ||
| 322 | </tr> | 304 | </tr> |
| 323 | </tbody> | 305 | </tbody> |
| 324 | </table> | 306 | </table> |
| 325 | <p>A <strong>SCHEDULE</strong> command consists of a 7-frame multipart message, formatted as follows.</p> | 307 | <p>A <strong>DISCONNECT</strong> frame consists of</p> |
| 326 | <table border="1" class="docutils"> | 308 | <table border="1" class="docutils"> |
| 327 | <colgroup> | 309 | <colgroup> |
| 328 | <col width="10%" /> | 310 | <col width="14%" /> |
| 329 | <col width="23%" /> | 311 | <col width="33%" /> |
| 330 | <col width="67%" /> | 312 | <col width="53%" /> |
| 331 | </colgroup> | 313 | </colgroup> |
| 332 | <thead valign="bottom"> | 314 | <thead valign="bottom"> |
| 333 | <tr class="row-odd"><th class="head">FRAME</th> | 315 | <tr class="row-odd"><th class="head">FRAME</th> |
| @@ -345,28 +327,51 @@ | |||
| 345 | <td>Protocol version</td> | 327 | <td>Protocol version</td> |
| 346 | </tr> | 328 | </tr> |
| 347 | <tr class="row-even"><td>2</td> | 329 | <tr class="row-even"><td>2</td> |
| 348 | <td>SCHEDULE</td> | 330 | <td>DISCONNECT</td> |
| 349 | <td>command</td> | 331 | <td>command</td> |
| 350 | </tr> | 332 | </tr> |
| 351 | <tr class="row-odd"><td>3</td> | 333 | <tr class="row-odd"><td>3</td> |
| 352 | <td>_MSGID_</td> | 334 | <td>_MSGID_</td> |
| 353 | <td>A unique id for the msg</td> | 335 | <td>A unique id for the msg</td> |
| 354 | </tr> | 336 | </tr> |
| 355 | <tr class="row-even"><td>4</td> | 337 | </tbody> |
| 356 | <td>_QUEUE_NAME_</td> | 338 | </table> |
| 357 | <td>name of queue that the job should run in</td> | 339 | <p>A <strong>KBAI</strong> frame consists of</p> |
| 340 | <table border="1" class="docutils"> | ||
| 341 | <colgroup> | ||
| 342 | <col width="14%" /> | ||
| 343 | <col width="33%" /> | ||
| 344 | <col width="53%" /> | ||
| 345 | </colgroup> | ||
| 346 | <thead valign="bottom"> | ||
| 347 | <tr class="row-odd"><th class="head">FRAME</th> | ||
| 348 | <th class="head">Value</th> | ||
| 349 | <th class="head">Description</th> | ||
| 358 | </tr> | 350 | </tr> |
| 359 | <tr class="row-odd"><td>5</td> | 351 | </thead> |
| 360 | <td>_HEADERS_</td> | 352 | <tbody valign="top"> |
| 361 | <td>csv list of headers for this message</td> | 353 | <tr class="row-even"><td>0</td> |
| 354 | <td>_EMPTY_</td> | ||
| 355 | <td>leave empty</td> | ||
| 362 | </tr> | 356 | </tr> |
| 363 | <tr class="row-even"><td>6</td> | 357 | <tr class="row-odd"><td>1</td> |
| 364 | <td>_MSG_</td> | 358 | <td>eMQP/1.0</td> |
| 365 | <td>The message to send</td> | 359 | <td>Protocol version</td> |
| 360 | </tr> | ||
| 361 | <tr class="row-even"><td>2</td> | ||
| 362 | <td>KBAI</td> | ||
| 363 | <td>command</td> | ||
| 364 | </tr> | ||
| 365 | <tr class="row-odd"><td>3</td> | ||
| 366 | <td>_MSGID_</td> | ||
| 367 | <td>A unique id for the msg</td> | ||
| 366 | </tr> | 368 | </tr> |
| 367 | </tbody> | 369 | </tbody> |
| 368 | </table> | 370 | </table> |
| 369 | <p>An <strong>UNSCHEDULE</strong> command consists of a 7-frame multipart message, formatted as follows.</p> | 371 | </div> |
| 372 | <div class="section" id="emqp-client"> | ||
| 373 | <h3>eMQP / Client<a class="headerlink" href="#emqp-client" title="Permalink to this headline">¶</a></h3> | ||
| 374 | <p>A <strong>REQUEST</strong> command consists of a 7-frame multipart message, formatted as follows.</p> | ||
| 370 | <table border="1" class="docutils"> | 375 | <table border="1" class="docutils"> |
| 371 | <colgroup> | 376 | <colgroup> |
| 372 | <col width="8%" /> | 377 | <col width="8%" /> |
| @@ -389,7 +394,7 @@ | |||
| 389 | <td>Protocol version</td> | 394 | <td>Protocol version</td> |
| 390 | </tr> | 395 | </tr> |
| 391 | <tr class="row-even"><td>2</td> | 396 | <tr class="row-even"><td>2</td> |
| 392 | <td>UNSCHEDULE</td> | 397 | <td>REQUEST</td> |
| 393 | <td>command</td> | 398 | <td>command</td> |
| 394 | </tr> | 399 | </tr> |
| 395 | <tr class="row-odd"><td>3</td> | 400 | <tr class="row-odd"><td>3</td> |
| @@ -398,11 +403,11 @@ | |||
| 398 | </tr> | 403 | </tr> |
| 399 | <tr class="row-even"><td>4</td> | 404 | <tr class="row-even"><td>4</td> |
| 400 | <td>_QUEUE_NAME_</td> | 405 | <td>_QUEUE_NAME_</td> |
| 401 | <td>ignored for this command, broadcasted to all queues</td> | 406 | <td>the name of the queue the request should be sent to</td> |
| 402 | </tr> | 407 | </tr> |
| 403 | <tr class="row-odd"><td>5</td> | 408 | <tr class="row-odd"><td>5</td> |
| 404 | <td>_HEADERS_</td> | 409 | <td>_HEADERS_</td> |
| 405 | <td>csv list of headers for this message</td> | 410 | <td>dictionary of headers. can be an empty set</td> |
| 406 | </tr> | 411 | </tr> |
| 407 | <tr class="row-even"><td>6</td> | 412 | <tr class="row-even"><td>6</td> |
| 408 | <td>_MSG_</td> | 413 | <td>_MSG_</td> |
| @@ -410,15 +415,12 @@ | |||
| 410 | </tr> | 415 | </tr> |
| 411 | </tbody> | 416 | </tbody> |
| 412 | </table> | 417 | </table> |
| 413 | </div> | 418 | <p>A <strong>PUBLISH</strong> command consists of a 7-frame multipart messag, formatted as follows.</p> |
| 414 | <div class="section" id="emqp-scheduler"> | ||
| 415 | <h3>eMQP / Scheduler<a class="headerlink" href="#emqp-scheduler" title="Permalink to this headline">¶</a></h3> | ||
| 416 | <p>An <strong>INFORM</strong> command consists of a 6-frame multipart message, formatted as follows.</p> | ||
| 417 | <table border="1" class="docutils"> | 419 | <table border="1" class="docutils"> |
| 418 | <colgroup> | 420 | <colgroup> |
| 419 | <col width="13%" /> | 421 | <col width="7%" /> |
| 420 | <col width="29%" /> | 422 | <col width="17%" /> |
| 421 | <col width="58%" /> | 423 | <col width="75%" /> |
| 422 | </colgroup> | 424 | </colgroup> |
| 423 | <thead valign="bottom"> | 425 | <thead valign="bottom"> |
| 424 | <tr class="row-odd"><th class="head">FRAME</th> | 426 | <tr class="row-odd"><th class="head">FRAME</th> |
| @@ -436,7 +438,7 @@ | |||
| 436 | <td>Protocol version</td> | 438 | <td>Protocol version</td> |
| 437 | </tr> | 439 | </tr> |
| 438 | <tr class="row-even"><td>2</td> | 440 | <tr class="row-even"><td>2</td> |
| 439 | <td>INFORM</td> | 441 | <td>PUBLISH</td> |
| 440 | <td>command</td> | 442 | <td>command</td> |
| 441 | </tr> | 443 | </tr> |
| 442 | <tr class="row-odd"><td>3</td> | 444 | <tr class="row-odd"><td>3</td> |
| @@ -444,24 +446,25 @@ | |||
| 444 | <td>A unique id for the msg</td> | 446 | <td>A unique id for the msg</td> |
| 445 | </tr> | 447 | </tr> |
| 446 | <tr class="row-even"><td>4</td> | 448 | <tr class="row-even"><td>4</td> |
| 447 | <td> </td> | 449 | <td>_TOPIC_NAME_</td> |
| 448 | <td>Queues. Unused for scheduler</td> | 450 | <td>the name of the topic this message should be published across</td> |
| 449 | </tr> | 451 | </tr> |
| 450 | <tr class="row-odd"><td>5</td> | 452 | <tr class="row-odd"><td>5</td> |
| 451 | <td>scheduler</td> | 453 | <td>_HEADERS_</td> |
| 452 | <td>type of peer connecting</td> | 454 | <td>csv list of headers</td> |
| 455 | </tr> | ||
| 456 | <tr class="row-even"><td>6</td> | ||
| 457 | <td>_MSG_</td> | ||
| 458 | <td>The message to send</td> | ||
| 453 | </tr> | 459 | </tr> |
| 454 | </tbody> | 460 | </tbody> |
| 455 | </table> | 461 | </table> |
| 456 | </div> | 462 | <p>A <strong>SCHEDULE</strong> command consists of a 7-frame multipart message, formatted as follows.</p> |
| 457 | <div class="section" id="emqp-worker"> | ||
| 458 | <h3>eMQP / Worker<a class="headerlink" href="#emqp-worker" title="Permalink to this headline">¶</a></h3> | ||
| 459 | <p>An <strong>INFORM</strong> command consists of a 5-frame multipart message, formatted as follows.</p> | ||
| 460 | <table border="1" class="docutils"> | 463 | <table border="1" class="docutils"> |
| 461 | <colgroup> | 464 | <colgroup> |
| 462 | <col width="5%" /> | 465 | <col width="10%" /> |
| 463 | <col width="13%" /> | 466 | <col width="23%" /> |
| 464 | <col width="82%" /> | 467 | <col width="67%" /> |
| 465 | </colgroup> | 468 | </colgroup> |
| 466 | <thead valign="bottom"> | 469 | <thead valign="bottom"> |
| 467 | <tr class="row-odd"><th class="head">FRAME</th> | 470 | <tr class="row-odd"><th class="head">FRAME</th> |
| @@ -479,7 +482,7 @@ | |||
| 479 | <td>Protocol version</td> | 482 | <td>Protocol version</td> |
| 480 | </tr> | 483 | </tr> |
| 481 | <tr class="row-even"><td>2</td> | 484 | <tr class="row-even"><td>2</td> |
| 482 | <td>INFORM</td> | 485 | <td>SCHEDULE</td> |
| 483 | <td>command</td> | 486 | <td>command</td> |
| 484 | </tr> | 487 | </tr> |
| 485 | <tr class="row-odd"><td>3</td> | 488 | <tr class="row-odd"><td>3</td> |
| @@ -487,21 +490,25 @@ | |||
| 487 | <td>A unique id for the msg</td> | 490 | <td>A unique id for the msg</td> |
| 488 | </tr> | 491 | </tr> |
| 489 | <tr class="row-even"><td>4</td> | 492 | <tr class="row-even"><td>4</td> |
| 490 | <td>_QUEUES_</td> | 493 | <td>_QUEUE_NAME_</td> |
| 491 | <td>csv seperated arrays containing an int and a string for weight and name. e.g. [40, ‘email’]</td> | 494 | <td>name of queue that the job should run in</td> |
| 492 | </tr> | 495 | </tr> |
| 493 | <tr class="row-odd"><td>5</td> | 496 | <tr class="row-odd"><td>5</td> |
| 494 | <td>worker</td> | 497 | <td>_HEADERS_</td> |
| 495 | <td>type of peer connecting</td> | 498 | <td>csv list of headers for this message</td> |
| 499 | </tr> | ||
| 500 | <tr class="row-even"><td>6</td> | ||
| 501 | <td>_MSG_</td> | ||
| 502 | <td>The message to send</td> | ||
| 496 | </tr> | 503 | </tr> |
| 497 | </tbody> | 504 | </tbody> |
| 498 | </table> | 505 | </table> |
| 499 | <p>A <strong>READY</strong> frame consists of a 4-frame multipart message, formatted as follows.</p> | 506 | <p>An <strong>UNSCHEDULE</strong> command consists of a 7-frame multipart message, formatted as follows.</p> |
| 500 | <table border="1" class="docutils"> | 507 | <table border="1" class="docutils"> |
| 501 | <colgroup> | 508 | <colgroup> |
| 502 | <col width="14%" /> | 509 | <col width="8%" /> |
| 503 | <col width="33%" /> | 510 | <col width="20%" /> |
| 504 | <col width="53%" /> | 511 | <col width="72%" /> |
| 505 | </colgroup> | 512 | </colgroup> |
| 506 | <thead valign="bottom"> | 513 | <thead valign="bottom"> |
| 507 | <tr class="row-odd"><th class="head">FRAME</th> | 514 | <tr class="row-odd"><th class="head">FRAME</th> |
| @@ -519,21 +526,36 @@ | |||
| 519 | <td>Protocol version</td> | 526 | <td>Protocol version</td> |
| 520 | </tr> | 527 | </tr> |
| 521 | <tr class="row-even"><td>2</td> | 528 | <tr class="row-even"><td>2</td> |
| 522 | <td>READY</td> | 529 | <td>UNSCHEDULE</td> |
| 523 | <td>command</td> | 530 | <td>command</td> |
| 524 | </tr> | 531 | </tr> |
| 525 | <tr class="row-odd"><td>3</td> | 532 | <tr class="row-odd"><td>3</td> |
| 526 | <td>_MSGID_</td> | 533 | <td>_MSGID_</td> |
| 527 | <td>A unique id for the msg</td> | 534 | <td>A unique id for the msg</td> |
| 528 | </tr> | 535 | </tr> |
| 536 | <tr class="row-even"><td>4</td> | ||
| 537 | <td>_QUEUE_NAME_</td> | ||
| 538 | <td>ignored for this command, broadcasted to all queues</td> | ||
| 539 | </tr> | ||
| 540 | <tr class="row-odd"><td>5</td> | ||
| 541 | <td>_HEADERS_</td> | ||
| 542 | <td>csv list of headers for this message</td> | ||
| 543 | </tr> | ||
| 544 | <tr class="row-even"><td>6</td> | ||
| 545 | <td>_MSG_</td> | ||
| 546 | <td>The message to send</td> | ||
| 547 | </tr> | ||
| 529 | </tbody> | 548 | </tbody> |
| 530 | </table> | 549 | </table> |
| 531 | <p>A <strong>REPLY</strong> frame consists of a 5-frame multipart message, formatted as follows.</p> | 550 | </div> |
| 551 | <div class="section" id="emqp-scheduler"> | ||
| 552 | <h3>eMQP / Scheduler<a class="headerlink" href="#emqp-scheduler" title="Permalink to this headline">¶</a></h3> | ||
| 553 | <p>An <strong>INFORM</strong> command consists of a 6-frame multipart message, formatted as follows.</p> | ||
| 532 | <table border="1" class="docutils"> | 554 | <table border="1" class="docutils"> |
| 533 | <colgroup> | 555 | <colgroup> |
| 534 | <col width="13%" /> | 556 | <col width="13%" /> |
| 535 | <col width="31%" /> | 557 | <col width="29%" /> |
| 536 | <col width="56%" /> | 558 | <col width="58%" /> |
| 537 | </colgroup> | 559 | </colgroup> |
| 538 | <thead valign="bottom"> | 560 | <thead valign="bottom"> |
| 539 | <tr class="row-odd"><th class="head">FRAME</th> | 561 | <tr class="row-odd"><th class="head">FRAME</th> |
| @@ -551,7 +573,7 @@ | |||
| 551 | <td>Protocol version</td> | 573 | <td>Protocol version</td> |
| 552 | </tr> | 574 | </tr> |
| 553 | <tr class="row-even"><td>2</td> | 575 | <tr class="row-even"><td>2</td> |
| 554 | <td>REPLY</td> | 576 | <td>INFORM</td> |
| 555 | <td>command</td> | 577 | <td>command</td> |
| 556 | </tr> | 578 | </tr> |
| 557 | <tr class="row-odd"><td>3</td> | 579 | <tr class="row-odd"><td>3</td> |
| @@ -559,17 +581,24 @@ | |||
| 559 | <td>A unique id for the msg</td> | 581 | <td>A unique id for the msg</td> |
| 560 | </tr> | 582 | </tr> |
| 561 | <tr class="row-even"><td>4</td> | 583 | <tr class="row-even"><td>4</td> |
| 562 | <td>_MSG_</td> | 584 | <td> </td> |
| 563 | <td>The reply to respond with</td> | 585 | <td>Queues. Unused for scheduler</td> |
| 586 | </tr> | ||
| 587 | <tr class="row-odd"><td>5</td> | ||
| 588 | <td>scheduler</td> | ||
| 589 | <td>type of peer connecting</td> | ||
| 564 | </tr> | 590 | </tr> |
| 565 | </tbody> | 591 | </tbody> |
| 566 | </table> | 592 | </table> |
| 567 | <p>A <strong>HEARTBEAT</strong> frame consists of a</p> | 593 | </div> |
| 594 | <div class="section" id="emqp-worker"> | ||
| 595 | <h3>eMQP / Worker<a class="headerlink" href="#emqp-worker" title="Permalink to this headline">¶</a></h3> | ||
| 596 | <p>An <strong>INFORM</strong> command consists of a 5-frame multipart message, formatted as follows.</p> | ||
| 568 | <table border="1" class="docutils"> | 597 | <table border="1" class="docutils"> |
| 569 | <colgroup> | 598 | <colgroup> |
| 570 | <col width="14%" /> | 599 | <col width="5%" /> |
| 571 | <col width="33%" /> | 600 | <col width="13%" /> |
| 572 | <col width="53%" /> | 601 | <col width="82%" /> |
| 573 | </colgroup> | 602 | </colgroup> |
| 574 | <thead valign="bottom"> | 603 | <thead valign="bottom"> |
| 575 | <tr class="row-odd"><th class="head">FRAME</th> | 604 | <tr class="row-odd"><th class="head">FRAME</th> |
| @@ -587,7 +616,7 @@ | |||
| 587 | <td>Protocol version</td> | 616 | <td>Protocol version</td> |
| 588 | </tr> | 617 | </tr> |
| 589 | <tr class="row-even"><td>2</td> | 618 | <tr class="row-even"><td>2</td> |
| 590 | <td>HEARTBEAT</td> | 619 | <td>INFORM</td> |
| 591 | <td>command</td> | 620 | <td>command</td> |
| 592 | </tr> | 621 | </tr> |
| 593 | <tr class="row-odd"><td>3</td> | 622 | <tr class="row-odd"><td>3</td> |
| @@ -595,12 +624,16 @@ | |||
| 595 | <td>A unique id for the msg</td> | 624 | <td>A unique id for the msg</td> |
| 596 | </tr> | 625 | </tr> |
| 597 | <tr class="row-even"><td>4</td> | 626 | <tr class="row-even"><td>4</td> |
| 598 | <td>_UNIX_TS_</td> | 627 | <td>_QUEUES_</td> |
| 599 | <td>A unix timestamp</td> | 628 | <td>csv seperated arrays containing an int and a string for weight and name. e.g. [40, ‘email’]</td> |
| 629 | </tr> | ||
| 630 | <tr class="row-odd"><td>5</td> | ||
| 631 | <td>worker</td> | ||
| 632 | <td>type of peer connecting</td> | ||
| 600 | </tr> | 633 | </tr> |
| 601 | </tbody> | 634 | </tbody> |
| 602 | </table> | 635 | </table> |
| 603 | <p>A <strong>DISCONNECT</strong> frame consists of</p> | 636 | <p>A <strong>READY</strong> frame consists of a 4-frame multipart message, formatted as follows.</p> |
| 604 | <table border="1" class="docutils"> | 637 | <table border="1" class="docutils"> |
| 605 | <colgroup> | 638 | <colgroup> |
| 606 | <col width="14%" /> | 639 | <col width="14%" /> |
| @@ -623,7 +656,7 @@ | |||
| 623 | <td>Protocol version</td> | 656 | <td>Protocol version</td> |
| 624 | </tr> | 657 | </tr> |
| 625 | <tr class="row-even"><td>2</td> | 658 | <tr class="row-even"><td>2</td> |
| 626 | <td>DISCONNECT</td> | 659 | <td>READY</td> |
| 627 | <td>command</td> | 660 | <td>command</td> |
| 628 | </tr> | 661 | </tr> |
| 629 | <tr class="row-odd"><td>3</td> | 662 | <tr class="row-odd"><td>3</td> |
| @@ -637,7 +670,7 @@ | |||
| 637 | <h3>Heartbeating<a class="headerlink" href="#heartbeating" title="Permalink to this headline">¶</a></h3> | 670 | <h3>Heartbeating<a class="headerlink" href="#heartbeating" title="Permalink to this headline">¶</a></h3> |
| 638 | <blockquote> | 671 | <blockquote> |
| 639 | <div><ul class="simple"> | 672 | <div><ul class="simple"> |
| 640 | <li>HEARTBEAT commands are valid at any time after an INFORM command</li> | 673 | <li>HEARTBEAT commands are valid at any time after an INFORM command.</li> |
| 641 | <li>Any command except DISCONNECT act as a heartbeat. Peers SHOULD NOT send HEARTBEAT commands while sending other commands.</li> | 674 | <li>Any command except DISCONNECT act as a heartbeat. Peers SHOULD NOT send HEARTBEAT commands while sending other commands.</li> |
| 642 | <li>Worker and broker MUST send heartbeats at regular and agreed-upon intervals.</li> | 675 | <li>Worker and broker MUST send heartbeats at regular and agreed-upon intervals.</li> |
| 643 | <li>Scheduler and broker MUST send heartbeats at regular and agreed-upon intervals.</li> | 676 | <li>Scheduler and broker MUST send heartbeats at regular and agreed-upon intervals.</li> |
| @@ -647,22 +680,24 @@ | |||
| 647 | </ul> | 680 | </ul> |
| 648 | </div></blockquote> | 681 | </div></blockquote> |
| 649 | </div> | 682 | </div> |
| 650 | <div class="section" id="request-headers"> | 683 | <div class="section" id="headers"> |
| 651 | <h3>REQUEST Headers<a class="headerlink" href="#request-headers" title="Permalink to this headline">¶</a></h3> | 684 | <h3>Headers<a class="headerlink" href="#headers" title="Permalink to this headline">¶</a></h3> |
| 652 | <p>Headers MUST be 0 to many comma seperated values inserted into the header field. If there are no headers required, send an empty string MUST be sent where headers are required.</p> | 685 | <p>Headers MUST be 0 to many comma seperated values inserted into the header field. If there are no headers required, an empty string MUST be sent where headers are required.</p> |
| 653 | <p>Below is a table which defines and describes the headers.</p> | 686 | <p>Below is a table which defines and describes the headers.</p> |
| 654 | <table border="1" class="docutils"> | 687 | <table border="1" class="docutils"> |
| 655 | <colgroup> | 688 | <colgroup> |
| 656 | <col width="9%" /> | 689 | <col width="8%" /> |
| 657 | <col width="4%" /> | 690 | <col width="3%" /> |
| 658 | <col width="4%" /> | 691 | <col width="3%" /> |
| 659 | <col width="4%" /> | 692 | <col width="4%" /> |
| 660 | <col width="78%" /> | 693 | <col width="3%" /> |
| 694 | <col width="79%" /> | ||
| 661 | </colgroup> | 695 | </colgroup> |
| 662 | <thead valign="bottom"> | 696 | <thead valign="bottom"> |
| 663 | <tr class="row-odd"><th class="head">Header</th> | 697 | <tr class="row-odd"><th class="head">Header</th> |
| 664 | <th class="head">REQUEST</th> | 698 | <th class="head">REQUEST</th> |
| 665 | <th class="head">PUBLISH</th> | 699 | <th class="head">PUBLISH</th> |
| 700 | <th class="head">SCHEDULE</th> | ||
| 666 | <th class="head">Default</th> | 701 | <th class="head">Default</th> |
| 667 | <th class="head">Description</th> | 702 | <th class="head">Description</th> |
| 668 | </tr> | 703 | </tr> |
| @@ -671,25 +706,53 @@ | |||
| 671 | <tr class="row-even"><td>reply-requested</td> | 706 | <tr class="row-even"><td>reply-requested</td> |
| 672 | <td>X</td> | 707 | <td>X</td> |
| 673 | <td> </td> | 708 | <td> </td> |
| 709 | <td> </td> | ||
| 674 | <td>False</td> | 710 | <td>False</td> |
| 675 | <td>Once the job is finished, send a reply back with information from the job. If there is no information reply with a True value.</td> | 711 | <td>Once the job is finished, send a reply back with information from the job. If there is no information reply with a True value.</td> |
| 676 | </tr> | 712 | </tr> |
| 677 | <tr class="row-odd"><td>retry-count:#</td> | 713 | <tr class="row-odd"><td>retry-count:#</td> |
| 678 | <td>X</td> | 714 | <td>X</td> |
| 679 | <td> </td> | 715 | <td> </td> |
| 716 | <td> </td> | ||
| 680 | <td>0</td> | 717 | <td>0</td> |
| 681 | <td>Retry a failed job this many times before accepting defeat.</td> | 718 | <td>Retry a failed job this many times before accepting defeat.</td> |
| 682 | </tr> | 719 | </tr> |
| 683 | <tr class="row-even"><td>guarantee</td> | 720 | <tr class="row-even"><td>guarantee</td> |
| 684 | <td>X</td> | 721 | <td>X</td> |
| 685 | <td> </td> | 722 | <td> </td> |
| 723 | <td> </td> | ||
| 686 | <td>False</td> | 724 | <td>False</td> |
| 687 | <td>Ensure the job completes by letting someone else worry about a success reply.</td> | 725 | <td>Ensure the job completes by letting someone else worry about a success reply.</td> |
| 688 | </tr> | 726 | </tr> |
| 727 | <tr class="row-odd"><td>nohaste</td> | ||
| 728 | <td> </td> | ||
| 729 | <td> </td> | ||
| 730 | <td>X</td> | ||
| 731 | <td>False</td> | ||
| 732 | <td>When scheduling a job, set this to True if you don’t want the job to run immediately as it’s scheduled. Instead, it will run for the first time when the interval has elapsed.</td> | ||
| 733 | </tr> | ||
| 689 | </tbody> | 734 | </tbody> |
| 690 | </table> | 735 | </table> |
| 691 | </div> | 736 | </div> |
| 692 | </div> | 737 | </div> |
| 738 | <div class="section" id="disconnect-and-kbai"> | ||
| 739 | <h2>DISCONNECT and KBAI<a class="headerlink" href="#disconnect-and-kbai" title="Permalink to this headline">¶</a></h2> | ||
| 740 | <dl class="docutils"> | ||
| 741 | <dt>When a component receives a DISCONNECT command it:</dt> | ||
| 742 | <dd><ul class="first last simple"> | ||
| 743 | <li>MUST send a KBAI command to all connected components.</li> | ||
| 744 | <li>MUST stop sending and receiving any messages</li> | ||
| 745 | <li>MUST allow any pending messages or jobs to complete.</li> | ||
| 746 | </ul> | ||
| 747 | </dd> | ||
| 748 | <dt>When a component receives a KBAI command it:</dt> | ||
| 749 | <dd><ul class="first last simple"> | ||
| 750 | <li>MUST stop sending any messages to the disconnecting component.</li> | ||
| 751 | <li>SHOULD Clean up references to the disconnecting component.</li> | ||
| 752 | </ul> | ||
| 753 | </dd> | ||
| 754 | </dl> | ||
| 755 | </div> | ||
| 693 | </div> | 756 | </div> |
| 694 | 757 | ||
| 695 | 758 | ||