- Notifications
You must be signed in to change notification settings - Fork2
Example of High-Speed Subscriber Patterns in ZeroMQ
License
ryansmccoy/zmq-high-speed-subs
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Example of High-Speed Subscribers (Black Box Pattern) in ZeroMQ
- ZeroMQ Guide:http://zguide.zeromq.org/py:chapter5#toc5
"A common use case for pub-sub is distributing large data streams like market data coming from stock exchanges. A typical setup would have a publisher connected to a stock exchange, taking price quotes, and sending them out to a number of subscribers. If there are a handful of subscribers, we could use TCP. If we have a larger number of subscribers, we'd probably use reliable multicast, i.e., PGM." - ZeroMQ Guide
Setup Environment & Run Example (Windows):
git clone https://github.com/ryansmccoy/zmq-high-speed-subscd zmq-high-speed-subsconda create -n zmq-high-speed-subs python=3.8 pyzmq pandas numpy -yactivate zmq-high-speed-subspip install -r requirements.txt
Setup Environment & Run Example (Linux):
git clone https://github.com/ryansmccoy/zmq-high-speed-subscd zmq-high-speed-subsconda create -n zmq-high-speed-subs python=3.8 pyzmq pandas numpy -ysource activate zmq-high-speed-subspip install -r requirements.txt
To run, open seperate terminal windows, run:
Publisher
$ activate zmq-high-speed-subs$ python zmq_high_speed_subs\publisher_fakefeed.pyOutput: 2019-07-31 06:21:45,898 INFO [Publisher-1(30632)] 2019-07-31 06:21:45,967 INFO [Publisher-1(30632)] 2019-07-31 06:21:45,986 INFO [Publisher-1(30632)] Time Elapsed: 10.1 seconds 2019-07-31 06:21:46,018 INFO [Publisher-1(30632)] Messages During Period: 55008 2019-07-31 06:21:46,026 INFO [Publisher-1(30632)] Messages Per Second: 5443.9 2019-07-31 06:21:46,032 INFO [Publisher-1(30632)] 2019-07-31 06:21:46,041 INFO [Publisher-1(30632)] Total Messages Published: 32950459 2019-07-31 06:21:46,059 INFO [Publisher-1(30632)] 2019-07-31 06:21:46,065 INFO [Publisher-1(30632)]
Subscriber-to-Pusher
$ activate zmq-high-speed-subs$ python zmq_high_speed_subs/_10_manager.pyOutput: 2019-07-31 04:57:47,588 INFO [ZMQSubscriber(31384)] 2019-07-31 04:57:47,588 INFO [ZMQSubscriber(31384)] Time Elapsed: 10 seconds 2019-07-31 04:57:47,589 INFO [ZMQSubscriber(31384)] Messages During Period: 7359215 2019-07-31 04:57:47,589 INFO [ZMQSubscriber(31384)] Messages Per Second: 5502.83 2019-07-31 04:57:47,589 INFO [ZMQSubscriber(31384)] 2019-07-31 04:57:47,589 INFO [ZMQSubscriber(31384)] Total Time Elapsed: 1516.85 seconds 2019-07-31 04:57:47,590 INFO [ZMQSubscriber(31384)] Total Messages: 7359215 2019-07-31 04:57:47,590 INFO [ZMQSubscriber(31384)] Total Messages Per Second: 4851.64 2019-07-31 04:57:47,591 INFO [ZMQSubscriber(31384)] 2019-07-31 04:57:47,591 INFO [ZMQSubscriber(31384)] Current _Queue Size: 23 2019-07-31 04:57:47,592 INFO [ZMQSubscriber(31384)] 2019-07-31 04:57:55,951 INFO [ZMQPusher(45028)] 2019-07-31 04:57:55,951 INFO [ZMQPusher(45028)] Time Elapsed: 10 seconds 2019-07-31 04:57:55,952 INFO [ZMQPusher(45028)] Messages During Period: 55008 2019-07-31 04:57:55,952 INFO [ZMQPusher(45028)] Messages Per Second: 5494.9 2019-07-31 04:57:55,952 INFO [ZMQPusher(45028)] 2019-07-31 04:57:55,953 INFO [ZMQPusher(45028)] Total Time Elapsed: 1524.16 seconds 2019-07-31 04:57:55,953 INFO [ZMQPusher(45028)] Total Messages: 7414199 2019-07-31 04:57:55,953 INFO [ZMQPusher(45028)] Total Messages Per Second: 4864.46 2019-07-31 04:57:55,954 INFO [ZMQPusher(45028)] 2019-07-31 04:57:55,954 INFO [ZMQPusher(45028)] Current _Queue Size: 0 2019-07-31 04:57:55,954 INFO [ZMQPusher(45028)] 2019-07-31 04:57:56,005 INFO [ZMQPuller (30656)] 2019-07-31 04:57:56,005 INFO [ZMQPuller (30656)] Time Elapsed: 10 seconds 2019-07-31 04:57:56,006 INFO [ZMQPuller (30656)] Messages During Period: 55000 2019-07-31 04:57:56,006 INFO [ZMQPuller (30656)] Messages Per Second: 5484.78 2019-07-31 04:57:56,006 INFO [ZMQPuller (30656)] 2019-07-31 04:57:56,007 INFO [ZMQPuller (30656)] Total Time Elapsed: 1517.3 seconds 2019-07-31 04:57:56,007 INFO [ZMQPuller (30656)] Total Messages Distributed to finished Workers: 7390000 2019-07-31 04:57:56,008 INFO [ZMQPuller (30656)] Total Messages Per Second: 4870.48 2019-07-31 04:57:56,008 INFO [ZMQPuller (30656)] 2019-07-31 04:57:56,010 INFO [ZMQPuller (30656)] Total Messagesin _Queue: 1699 2019-07-31 04:57:56,010 INFO [ZMQPuller (30656)] Currently Running Workers: 12 2019-07-31 04:57:56,011 INFO [ZMQPuller (30656)] 2019-07-31 04:57:53,607 INFO [Worker (23848)] 2019-07-31 04:57:53,607 INFO [Worker (23848)] Worker Messages Time Elapsed: 1.71 seconds 2019-07-31 04:57:53,607 INFO [Worker (23848)] Worker Messages: 2501 2019-07-31 04:57:53,608 INFO [Worker (23848)] Worker Messages Per Second: 1458.61 2019-07-31 04:57:53,608 INFO [Worker (23848)] 2019-07-31 04:57:53,608 INFO [Worker (23848)] COMPLETED 2019-07-31 04:57:53,608 INFO [Worker (23848)]
If want to connect to database, rename .env.template to .env and enter your data base info:
# .envDB_HOST=localhostDB_DATABASE=zmq-exampleDB_TABLE=dataDB_USERNAME=pythonDB_PASSWORD=h1ghsp33d
- Free software: MIT license
- Documentation:https://zmq-high-speed-subs.readthedocs.io.
About
Example of High-Speed Subscriber Patterns in ZeroMQ
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Releases
Packages0
Uh oh!
There was an error while loading.Please reload this page.