{"id":15470855,"url":"https://github.com/andersfugmann/amqp-client-eio","last_synced_at":"2026-01-20T20:02:49.555Z","repository":{"id":50533536,"uuid":"518745532","full_name":"andersfugmann/amqp-client-eio","owner":"andersfugmann","description":"Amqp client for ocaml multicore based on eio","archived":false,"fork":false,"pushed_at":"2024-06-01T10:03:38.000Z","size":154,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-06T18:22:16.586Z","etag":null,"topics":["amqp-client","effects","library","multicore","ocaml-library"],"latest_commit_sha":null,"homepage":"https://andersfugmann.github.io/amqp-client-eio/index.html","language":"OCaml","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andersfugmann.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-07-28T07:30:09.000Z","updated_at":"2024-06-01T10:03:41.000Z","dependencies_parsed_at":"2024-06-01T11:24:14.312Z","dependency_job_id":"3fba17dc-5d18-4bfb-921a-df3e8c9af624","html_url":"https://github.com/andersfugmann/amqp-client-eio","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/andersfugmann/amqp-client-eio","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andersfugmann%2Famqp-client-eio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andersfugmann%2Famqp-client-eio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andersfugmann%2Famqp-client-eio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andersfugmann%2Famqp-client-eio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andersfugmann","download_url":"https://codeload.github.com/andersfugmann/amqp-client-eio/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andersfugmann%2Famqp-client-eio/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28612157,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-20T18:56:40.769Z","status":"ssl_error","status_checked_at":"2026-01-20T18:54:26.653Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["amqp-client","effects","library","multicore","ocaml-library"],"created_at":"2024-10-02T02:07:20.677Z","updated_at":"2026-01-20T20:02:49.541Z","avatar_url":"https://github.com/andersfugmann.png","language":"OCaml","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Multicore Aware AMQP client\nAMQP client based on EIO, to allow taking advantage of effect based\nocaml.\n\n[![Main\nworkflow](https://github.com/andersfugmann/amqp-client-eio/actions/workflows/workflow.yml/badge.svg)](https://github.com/andersfugmann/amqp-client-eio/actions/workflows/workflow.yml)\n\n[API](https://andersfugmann.github.io/amqp-client-eio/index.html)\n\n## Design\n\n### Goals\n\n#### No need for explicit locking.\nData will be communicated over streams / channels or promises.\n\n#### Data processing should be done as close to user a possible\nWhen sending data, data processing (frame encapsulation) should be\ndone by the calling thread.\n\n### Connection\nEstablish and setup a connection to the amqp server. This just holds\nsimple primitives.\nEach connection will have a sender and a receiver thread. These will\nbe locked to the same domain (But does not have to)\n\nThe sender will send everything posted on the sender channel\n(potentially\n\nThe receiver will relay data from the clannels\n\nWhen creating a connection - should we use the control flow?\n(Thats a design choice that can be changed later!)\n\n\n\n### Channel\nA channel has a function to send, and a receiver channel.\nData is relayed from the connection on the receiver channel, which\nwill lookup receiver to post data to.\n\n### Consuming from a queue\nSetting up consumption will return a queue for client consumption\n\n### Error handling\nError handling is done using exceptions\nConnection errors are relayed to all channels.\n\nChannel errors are relayed to all waiters.\nWhen sending in ack mode and\n\n\n#### Benchmarking\nCore i5, 2 cores - hyperthreading:\n  ~55K messages/src (send/receive pairs) to a rabbitmq server running\nlocally\n\nCore i9, 8 cores - hyperthreaded:\n  ~92K messages/src (send/receive pairs) to a rabbitmq server running\nlocally\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandersfugmann%2Famqp-client-eio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandersfugmann%2Famqp-client-eio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandersfugmann%2Famqp-client-eio/lists"}