{"id":16485972,"url":"https://github.com/simpod/phpkafka","last_synced_at":"2025-08-01T04:17:55.558Z","repository":{"id":39920271,"uuid":"192185967","full_name":"simPod/PhpKafka","owner":"simPod","description":"PHP Kafka boilerplate wrapper around RdKafka","archived":false,"fork":false,"pushed_at":"2025-07-29T01:50:51.000Z","size":202,"stargazers_count":6,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-29T03:44:34.619Z","etag":null,"topics":["kafka","kafka-consumer","kafka-producer","php","php-library","php7","rdkafka","rdkafka-extension"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/simPod.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":null,"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,"zenodo":null},"funding":{"github":["simPod"]}},"created_at":"2019-06-16T12:01:16.000Z","updated_at":"2025-07-29T01:50:42.000Z","dependencies_parsed_at":"2023-02-18T06:15:58.269Z","dependency_job_id":"70496939-5c25-4e76-80ad-a77ec931524f","html_url":"https://github.com/simPod/PhpKafka","commit_stats":{"total_commits":89,"total_committers":5,"mean_commits":17.8,"dds":0.4831460674157303,"last_synced_commit":"17ba6e4aab9bfc9ed4bc5676f0fc67e5feeafe4b"},"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/simPod/PhpKafka","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simPod%2FPhpKafka","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simPod%2FPhpKafka/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simPod%2FPhpKafka/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simPod%2FPhpKafka/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/simPod","download_url":"https://codeload.github.com/simPod/PhpKafka/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simPod%2FPhpKafka/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268168539,"owners_count":24206896,"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","status":"online","status_checked_at":"2025-08-01T02:00:08.611Z","response_time":67,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["kafka","kafka-consumer","kafka-producer","php","php-library","php7","rdkafka","rdkafka-extension"],"created_at":"2024-10-11T13:27:58.583Z","updated_at":"2025-08-01T04:17:55.529Z","avatar_url":"https://github.com/simPod.png","language":"PHP","funding_links":["https://github.com/sponsors/simPod"],"categories":[],"sub_categories":[],"readme":"# PHP Kafka boilerplate wrapper around RdKafka\n\n[![GitHub Actions][GA Image]][GA Link]\n[![Code Coverage][Coverage Image]][CodeCov Link]\n[![Downloads][Downloads Image]][Packagist Link]\n[![Packagist][Packagist Image]][Packagist Link]\n[![Infection MSI][Infection Image]][Infection Link]\n\n## Installation\n\nAdd as [Composer](https://getcomposer.org/) dependency:\n\n```sh\ncomposer require simpod/kafka\n```\n\n## Config Constants\n\nSome config constants are provided like `ConsumerConfig`, `ProducerConfig` or `CommonClientConfigs`.\n\nHowever, they are copied from Java API and not all are applicable to librdkafka. Consult with librdkafka documentation before use.\n\n## Clients\n\n### Consumer\n\n`KafkaConsumer` boilerplate is available with `startBatch()` method ([to suplement this example in librdkafka](https://github.com/edenhill/librdkafka/blob/master/examples/rdkafka_consume_batch.cpp#L97)) and with `start()`. They also handle\ntermination signals for you.\n\n#### Classic Consumer\n\n```php\n\u003c?php\n\ndeclare(strict_types=1);\n\nnamespace Your\\AppNamespace;\n\nuse RdKafka\\Message;\nuse SimPod\\Kafka\\Clients\\Consumer\\ConsumerConfig;\nuse SimPod\\Kafka\\Clients\\Consumer\\KafkaConsumer;\n\nfinal class ExampleConsumer\n{\n    public function run(): void\n    {\n        $kafkaConsumer = new KafkaConsumer($this-\u003egetConfig(), Logger::get());\n\n        $kafkaConsumer-\u003esubscribe(['topic1']);\n\n        $kafkaConsumer-\u003estart(\n            120 * 1000,\n            static function (Message $message) use ($kafkaConsumer) : void {\n                // Process message here\n\n                $kafkaConsumer-\u003ecommit($message); // Autocommit is disabled\n            }\n        );\n    }\n\n    private function getConfig(): ConsumerConfig\n    {\n        $config = new ConsumerConfig();\n\n        $config-\u003eset(ConsumerConfig::BOOTSTRAP_SERVERS_CONFIG, '127.0.0.1:9092');\n        $config-\u003eset(ConsumerConfig::ENABLE_AUTO_COMMIT_CONFIG, false);\n        $config-\u003eset(ConsumerConfig::CLIENT_ID_CONFIG, gethostname());\n        $config-\u003eset(ConsumerConfig::AUTO_OFFSET_RESET_CONFIG, 'earliest');\n        $config-\u003eset(ConsumerConfig::GROUP_ID_CONFIG, 'consumer_group_name');\n\n        return $config;\n    }\n}\n```\n\n#### Batching Consumer\n\n```php\n\u003c?php\n\ndeclare(strict_types=1);\n\nnamespace Your\\AppNamespace;\n\nuse RdKafka\\Message;\nuse SimPod\\Kafka\\Clients\\Consumer\\ConsumerConfig;\nuse SimPod\\Kafka\\Clients\\Consumer\\ConsumerRecords;\nuse SimPod\\Kafka\\Clients\\Consumer\\KafkaConsumer;\n\nfinal class ExampleBatchConsumer\n{\n    public function run(): void\n    {\n        $kafkaConsumer = new KafkaConsumer($this-\u003egetConfig());\n\n        $kafkaConsumer-\u003esubscribe(['topic1']);\n\n        $kafkaConsumer-\u003estartBatch(\n            200000, \n            120 * 1000,\n            static function (Message $message): void {\n                // Process record\n            },\n            static function (ConsumerRecords $consumerRecords) use ($kafkaConsumer) : void {\n                // Process records batch\n    \n                $kafkaConsumer-\u003ecommit($consumerRecords-\u003egetLast());\n            }\n        );\n    }\n\n    private function getConfig(): ConsumerConfig\n    {\n        $config = new ConsumerConfig();\n\n        $config-\u003eset(ConsumerConfig::BOOTSTRAP_SERVERS_CONFIG, '127.0.0.1:9092');\n        $config-\u003eset(ConsumerConfig::ENABLE_AUTO_COMMIT_CONFIG, false);\n        $config-\u003eset(ConsumerConfig::CLIENT_ID_CONFIG, gethostname());\n        $config-\u003eset(ConsumerConfig::AUTO_OFFSET_RESET_CONFIG, 'earliest');\n        $config-\u003eset(ConsumerConfig::GROUP_ID_CONFIG, 'consumer_group_name');\n\n        return $config;\n    }\n}\n```\n\n[GA Image]: https://github.com/simPod/PhpKafka/workflows/CI/badge.svg\n\n[GA Link]: https://github.com/simPod/PhpKafka/actions?query=workflow%3A%22CI%22+branch%3Amaster\n\n[Coverage Image]: https://codecov.io/gh/simPod/PhpKafka/branch/master/graph/badge.svg\n\n[CodeCov Link]: https://codecov.io/gh/simPod/PhpKafka/branch/master\n\n[Downloads Image]: https://poser.pugx.org/simpod/kafka/d/total.svg\n\n[Packagist Image]: https://poser.pugx.org/simpod/kafka/v/stable.svg\n\n[Packagist Link]: https://packagist.org/packages/simpod/kafka\n\n[Infection Image]: https://img.shields.io/endpoint?style=flat\u0026url=https%3A%2F%2Fbadge-api.stryker-mutator.io%2Fgithub.com%2FsimPod%2FPhpKafka%2Fmaster\n\n[Infection Link]: https://infection.github.io\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimpod%2Fphpkafka","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsimpod%2Fphpkafka","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimpod%2Fphpkafka/lists"}