ZeroMQ 基本
軽量、クロスプラットフォームな非同期メッセージングライブラリです。
- ZeroMQ
- 基本ライブラリ
- libzmq - ZeroMQ core engine in C++
- C言語用
- czmq - High-level binding for libzmq
- C++用
- Python 用
- Pyzmq - Python binding for libzmq
- PHP (組み込み)
ソケットタイプ
参考) http://api.zeromq.org/2-1:zmq-socket
Type | 方向 | 送信 | 受信 |
---|---|---|---|
ZMQ_REQ | T/R (交互) | Round-robin | Last peer |
ZMQ_REP | T/R (交互) | Last peer | Fair-queued |
ZMQ_DELAER | T/R | Round-robin | Fair-queued |
ZMQ_ROUTER | T/R | ? | Fair-queued |
ZMQ_PUB | T | Fan-out | - |
ZMQ_SUB | R | - | Fair-queued |
ZMQ_PUSH | T | Round-robin | - |
ZMQ_PULL | R | - | Fair-queued |
ZMQ_PAIR | T/R | - | - |
可能な組み合わせ
- REQ - REP (要求 - 応答)
- DEALER - ROUTER
- DEALER/ROUTER - REQ/REP
- PUB - SUB (一方向の同時送信)
- PUSH - PULL (一方向の分散送信)
- PAIR - PAIR (一対一)
メッセージングパターン
参考) 0MQ The Guide Chapter 1 - Basics
Request-reply (双方向・交互)
- REQ - REP
- Server(REQ) と 1 つ以上の Client(REP)
- Client は送信→受信、Server は受信→送信の順でおこなう必要がある。
- Server からの送信は、直前に要求を送った Client に送られる。
Publish-Subscribe (片方向・ファンアウト)
- PUB - SUB
- Publisher(PUB) と 1 つ以上の Subscriber(SUB)
- Publisher からの送信は、すべての Subscriber に送られる。
- 各 Subscriber はフィルタリングして自分に必要なメッセージだけを受信できる。
Push-pull (片方向・ラウンドロビン)
- PUSH - PULL
- Sender(PUSH) と 1 つの Receiver(PULL)
- Receiver は受信専用、Sender は送信専用。
- Sender からの送信は、各 Receiver に順番に送られる。
Parallel Pipeline
Fair Queuing
- PUSH - PULL
- Receiver(PULL) と 1 つ以上の Sender(PUSH)
- Receiver は受信専用、Sender は送信専用。
Reliable Request-Reply Patterns
参考) http://zguide.zeromq.org/page:chapter4#reliable-request-reply