{"id":23459562,"url":"https://github.com/d-led/curvezmq_docker_example","last_synced_at":"2025-04-11T21:38:00.752Z","repository":{"id":25554286,"uuid":"104509224","full_name":"d-led/curvezmq_docker_example","owner":"d-led","description":"Experimenting with CurveZMQ in different languages","archived":false,"fork":false,"pushed_at":"2022-02-08T17:02:19.000Z","size":19508,"stargazers_count":2,"open_issues_count":1,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-15T23:44:23.536Z","etag":null,"topics":["curvezmq","pony-language","python"],"latest_commit_sha":null,"homepage":"","language":"Pony","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/d-led.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-09-22T19:06:40.000Z","updated_at":"2022-02-08T15:18:03.000Z","dependencies_parsed_at":"2022-08-07T11:15:52.650Z","dependency_job_id":null,"html_url":"https://github.com/d-led/curvezmq_docker_example","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d-led%2Fcurvezmq_docker_example","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d-led%2Fcurvezmq_docker_example/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d-led%2Fcurvezmq_docker_example/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d-led%2Fcurvezmq_docker_example/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/d-led","download_url":"https://codeload.github.com/d-led/curvezmq_docker_example/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248484968,"owners_count":21111756,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["curvezmq","pony-language","python"],"created_at":"2024-12-24T06:15:41.754Z","updated_at":"2025-04-11T21:38:00.723Z","avatar_url":"https://github.com/d-led.png","language":"Pony","funding_links":[],"categories":[],"sub_categories":[],"readme":"# curvezmq_docker_example\n\nExperimenting with [CurveZMQ](http://curvezmq.org) in different languages.\n\nThe core question of the experiment is to see, whether different languages can interoperate securely via ZeroMQ.\n\nBuild \u0026 example output: see master branch in [![Build Status](https://travis-ci.org/d-led/curvezmq_docker_example.svg?branch=master)](https://travis-ci.org/d-led/curvezmq_docker_example/builds)\n\n![](output.png)\n\n## Libraries\n\n- [pyzmq](http://pyzmq.readthedocs.io/en/latest/) key generation, worker\n- [pony-zmq](https://github.com/jemc/pony-zmq) server, worker\n- [go: zmq4](https://github.com/pebbe/zmq4) worker\n- [jeromq](https://github.com/zeromq/jeromq) worker\n- [tclzmq](https://github.com/jdc8/tclzmq.git) worker\n\n## Architecture\n\n### Deployment\n\n- for simplicity: as a Docker Compose config\n- keys generated via a simple python script: [generate_certificates.py](generate_certificates.py)\n- server public key distribution via simple copying into the containers\n\n### Communication\n\n- ZeroMQ communication via TCP + CurveZMQ ([Stonehouse pattern](http://hintjens.com/blog:49#toc5))\n- Requests sent on port 7777, and returned on 7778\n- The push socket does task distribution to the workers ([Divide and conquer pattern](http://zguide.zeromq.org/page:all#Divide-and-Conquer))\n- Timeouts are (currently) used to stop the demo after the server sends a finite amount of requests\n\n### Pony Server\n\n- `Sender` actor to send sample requests at regular intervals on port `7777`\n- `Receiver` actor to receive responses on port `7778`\n- `Printer` actor to serialize printing to console\n- `Worker` actor to test `pony-zmq` in a round-trip (pulling on port `7777`, pushing on port `7778`)\n\n### Python Worker\n\n- polling with a timeout\n- pulling on port `7777`, pushing on port `7778`\n\n### Go Worker\n\n- `7777`/`7778`\n\n### Groovy Worker\n\n- preparing dependencies for jzmq failed \u0026rarr; using jeromq\n- `7777`/`7778`\n\n### Tcl Worker\n\n- `7777`/`7778`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fd-led%2Fcurvezmq_docker_example","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fd-led%2Fcurvezmq_docker_example","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fd-led%2Fcurvezmq_docker_example/lists"}