{"id":13811467,"url":"https://github.com/archfish/pulsar_sdk","last_synced_at":"2025-05-14T19:33:29.701Z","repository":{"id":56889557,"uuid":"222630498","full_name":"archfish/pulsar_sdk","owner":"archfish","description":"A pure ruby client for Apache Pulsar","archived":false,"fork":false,"pushed_at":"2020-05-25T10:55:06.000Z","size":179,"stargazers_count":12,"open_issues_count":2,"forks_count":4,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-11-14T20:48:11.559Z","etag":null,"topics":["apache-pulsar","pulsar","ruby","ruby-gem"],"latest_commit_sha":null,"homepage":null,"language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/archfish.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":"2019-11-19T07:02:56.000Z","updated_at":"2022-12-06T10:25:55.000Z","dependencies_parsed_at":"2022-08-20T16:00:15.782Z","dependency_job_id":null,"html_url":"https://github.com/archfish/pulsar_sdk","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/archfish%2Fpulsar_sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/archfish%2Fpulsar_sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/archfish%2Fpulsar_sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/archfish%2Fpulsar_sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/archfish","download_url":"https://codeload.github.com/archfish/pulsar_sdk/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225307781,"owners_count":17453870,"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":["apache-pulsar","pulsar","ruby","ruby-gem"],"created_at":"2024-08-04T04:00:21.736Z","updated_at":"2024-11-19T06:32:30.086Z","avatar_url":"https://github.com/archfish.png","language":"Ruby","funding_links":[],"categories":["Clients"],"sub_categories":[],"readme":"# A pure ruby client for Apache Pulsar\n\nRespecting [Pulsar binary protocol specification][2]\n\n## Example\n\nSee `examples`.\n\n## Dev\n\nI am using Ruby 2.4 develop this gem, if not work with other Ruby version, PR is welcome.\n\n```shell\n#!/bin/sh\n\nPB_PATH=\"./lib/protobuf/\"\nPB_IN='pulsar_api.proto'\nPB_OUT_F='pulsar_api.pb.rb'\n\nmkdir -p ${PB_PATH}\n\nwget -O ${PB_PATH}${PB_IN} https://raw.githubusercontent.com/apache/pulsar/master/pulsar-common/src/main/proto/PulsarApi.proto\n\n# protoc -I ${PULSAR_GIT}/pulsar-common/src/main/proto/ --ruby_out ${PB_PATH} PulsarApi.proto\nprotoc -I ${PB_PATH} --ruby_out ${PB_PATH} ${PB_IN}\nmv ${PB_PATH}pulsar_api_pb.rb ${PB_PATH}${PB_OUT_F}\n\n# fix pulsar.proto.ProtocolVersion error: invalid name `v0' for constant\nif [ $(uname) = 'Darwin' ]\nthen\n    suffix='.pbbak'\nfi\n\nfor i in $(seq 0 15)\ndo\n    sed -i ${suffix} \"s;value :v$i, $i;value :V$i, $i;g\" ${PB_PATH}${PB_OUT_F}\ndone\n\nrm -f ${PB_PATH}${PB_OUT_F}.pbbak\n\nprotoc -I ${PULSAR_GIT}/pulsar-common/src/main/proto/ --ruby_out ${PB_PATH} PulsarMarkers.proto\nmv ${PB_PATH}PulsarMarkers_pb.rb ${PB_PATH}pulsar_markers.pb.rb\n```\n\n## Dependency\n\nWhen macOS user install google-protobuf, there maybe a suffix with `universal-darwin` save to Gemfile.lock. Please use google-protobuf without `universal-darwin` suffix. See issuse #6 for detail. Thanks for wppurking's report!\n\n## Features\n\n- [ ] Connection\n  - [x] Establishment\n  - [ ] TLS connection\n  - [ ] Authentication\n- [ ] Producer\n  - [x] Message Delivery\n  - [x] [Delayed Message Delivery][1]\n  - [x] Get SendReceipt\n  - [x] Close Producer\n  - [x] Partitioned topics\n  - [ ] Batch Message Delivery\n  - [ ] Message Compression\n  - [ ] [Deliver message after AR transaction commit][3]\n- [ ] Consumer\n  - [x] Flow control\n  - [x] Ack\n  - [x] Message Redelivery\n  - [x] Listen\n  - [x] Partitioned topics\n  - [x] Topic with regexp (in same namespace)\n  - [x] Topic compaction\n  - [ ] Reader\n  - [ ] [Dead Letter Topic][4]\n  - [ ] [Key Shared][6]\n- [x] Keep alive\n  - [x] handle ping command\n  - [x] send ping command\n- [x] Service discovery\n  - [x] Topic lookup\n- [x] Log Optimization\n- [x] Connection pool\n- [ ] Unit Test\n- [x] Thread safe\n- [ ] Schema\n  - [ ] Get\n  - [ ] Create\n- [ ] Admin API\n  - [x] Create Namespace\n  - [x] List namespaces in current tenant\n  - [x] Destroy Namespace\n  - [x] List Namespace Topics\n  - [x] Create Topic\n  - [x] Delete Topic\n  - [x] Peek Messages\n\n## WIP\n\nCatch up [Pulsar client feature matrix][5], current working on:\n\n- Dead Letter Topic\n\n[1]: https://github.com/apache/pulsar/wiki/PIP-26%3A-Delayed-Message-Delivery \"PIP 26: Delayed Message Delivery\"\n[2]: https://pulsar.apache.org/docs/en/develop-binary-protocol/ \"Pulsar binary protocol specification\"\n[3]: https://github.com/Envek/after_commit_everywhere \"after commit everywhere\"\n[4]: https://github.com/apache/pulsar/wiki/PIP-22:-Pulsar-Dead-Letter-Topic \"PIP 22: Pulsar Dead Letter Topic\"\n[5]: https://github.com/apache/pulsar/wiki/Client-Features-Matrix \"Pulsar client feature matrix\"\n[6]: https://pulsar.apache.org/docs/en/concepts-messaging/#key_shared \"consumer key_shared mode\"\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farchfish%2Fpulsar_sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farchfish%2Fpulsar_sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farchfish%2Fpulsar_sdk/lists"}