{"id":18266820,"url":"https://github.com/chenquan/go-queue","last_synced_at":"2025-04-04T22:30:31.209Z","repository":{"id":38419839,"uuid":"461931020","full_name":"chenquan/go-queue","owner":"chenquan","description":"Kafka, Beanstalkd, Pulsar Pub/Sub framework. Reference: https://github.com/zeromicro/go-queue","archived":false,"fork":false,"pushed_at":"2025-03-18T06:38:31.000Z","size":389,"stargazers_count":5,"open_issues_count":5,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-20T20:14:02.236Z","etag":null,"topics":["beanstalkd","go","golang","kafka","mq","pulsar","queue"],"latest_commit_sha":null,"homepage":"","language":"Go","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/chenquan.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-02-21T15:55:41.000Z","updated_at":"2025-02-21T04:29:46.000Z","dependencies_parsed_at":"2023-09-27T05:32:33.437Z","dependency_job_id":"bdcc797d-f93b-4fee-8dc2-ecae2c6466c2","html_url":"https://github.com/chenquan/go-queue","commit_stats":null,"previous_names":[],"tags_count":42,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chenquan%2Fgo-queue","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chenquan%2Fgo-queue/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chenquan%2Fgo-queue/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chenquan%2Fgo-queue/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chenquan","download_url":"https://codeload.github.com/chenquan/go-queue/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247260217,"owners_count":20909957,"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":["beanstalkd","go","golang","kafka","mq","pulsar","queue"],"created_at":"2024-11-05T11:25:00.961Z","updated_at":"2025-04-04T22:30:30.490Z","avatar_url":"https://github.com/chenquan.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# go-queue\n\n\u003e Kafka, Beanstalkd, Pulsar Pub/Sub framework. Reference: https://github.com/zeromicro/go-queue\n\n## installation\n\n```shell\ngo get -u github.com/chenquan/go-queue\n```\n\n## beanstalkd\n\nHigh available beanstalkd.\n\n### consumer example\n\nconfig.yaml\n\n```yaml\nName: beanstalkd\nTelemetry:\n  Name: beanstalkd\n  Endpoint: http://localhost:14268/api/traces\n  Sampler: 1.0\n  Natcher: jaeger\n```\n\n```go\npackage main\n\nimport (\n\t\"context\"\n\t\"github.com/chenquan/go-queue/beanstalkd\"\n\t\"github.com/zeromicro/go-zero/core/conf\"\n\t\"github.com/zeromicro/go-zero/core/logx\"\n\t\"github.com/zeromicro/go-zero/core/service\"\n\t\"github.com/zeromicro/go-zero/core/stores/redis\"\n)\n\nfunc main() {\n\tvar c service.ServiceConf\n\tconf.MustLoad(\"config.yaml\", \u0026c)\n\n\tc.MustSetUp()\n\n\tconsumer := beanstalkd.NewConsumer(beanstalkd.Conf{\n\t\tBeanstalkd: beanstalkd.Beanstalkd{\n\t\t\tEndpoints: []string{\n\t\t\t\t\"localhost:11300\",\n\t\t\t\t\"localhost:11300\",\n\t\t\t},\n\t\t\tTube: \"tube\",\n\t\t},\n\t\tRedis: redis.RedisConf{\n\t\t\tHost: \"localhost:6379\",\n\t\t\tType: redis.NodeType,\n\t\t},\n\t}, beanstalkd.WithHandle(func(ctx context.Context, body []byte) {\n\t\tlogx.WithContext(ctx).Info(string(body))\n\n\t}))\n\tdefer consumer.Stop()\n\tconsumer.Start()\n}\n```\n\n### producer example\n\n```go\npackage main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"github.com/chenquan/go-queue/beanstalkd\"\n\t\"strconv\"\n\t\"time\"\n)\n\nfunc main() {\n\tproducer := beanstalkd.NewProducer(\n\t\tbeanstalkd.Beanstalkd{\n\t\t\tTube: \"tube\",\n\t\t\tEndpoints: []string{\n\t\t\t\t\"localhost:11300\",\n\t\t\t\t\"127.0.0.1:11300\",\n\t\t\t},\n\t\t},\n\t)\n\n\tfor i := 1; i \u003c 1005; i++ {\n\t\t//_, err := producer.Delay(context.Background(), []byte(strconv.Itoa(i)), time.Second*5)\n\t\t//if err != nil {\n\t\t//\tfmt.Println(err)\n\t\t//}\n\t\t_, err := producer.Push(context.Background(), nil, []byte(strconv.Itoa(i)), beanstalkd.WithDuration(time.Second*5))\n\t\tif err != nil {\n\t\t\tfmt.Println(err)\n\t\t}\n\t}\n}\n```\n\n## kafka\n\nKafka Pub/Sub framework\n\n### consumer example\n\nconfig.yaml\n\n```yaml\nName: kafka\nBrokers:\n  - 127.0.0.1:19092\n  - 127.0.0.1:19092\n  - 127.0.0.1:19092\nGroup: kafka\nTopic: kafka\nOffset: first\nConsumers: 1\n\nTelemetry:\n  Name: kq\n  Endpoint: http://localhost:14268/api/traces\n  Sampler: 1.0\n  Natcher: jaeger\n```\n\nexample code\n\n```go\npackage main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"github.com/chenquan/go-queue/kafka\"\n\t\"github.com/chenquan/go-queue/queue\"\n\t\"github.com/zeromicro/go-zero/core/logx\"\n\t\"github.com/zeromicro/go-zero/core/service\"\n\n\t\"github.com/zeromicro/go-zero/core/conf\"\n)\n\nfunc main() {\n\tvar c struct {\n\t\tkafka.Conf\n\t\tservice.ServiceConf\n\t}\n\n\tconf.MustLoad(\"config.yaml\", \u0026c)\n\tc.MustSetUp()\n\n\tq := kafka.MustNewQueue(c.Conf, queue.WithHandle(func(ctx context.Context, k, v []byte) error {\n\t\tlogx.WithContext(ctx).Info(fmt.Sprintf(\"=\u003e %s\\n\", v))\n\t\treturn nil\n\t}))\n\tdefer q.Stop()\n\tq.Start()\n}\n\n```\n\n### producer example\n\n```go\npackage main\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"github.com/chenquan/go-queue/kafka\"\n\t\"log\"\n\t\"math/rand\"\n\t\"strconv\"\n\t\"time\"\n\n\t\"github.com/zeromicro/go-zero/core/cmdline\"\n)\n\ntype message struct {\n\tKey     string `json:\"key\"`\n\tValue   string `json:\"value\"`\n\tPayload string `json:\"message\"`\n}\n\nfunc main() {\n\tpusher := kafka.NewPusher([]string{\n\t\t\"127.0.0.1:19092\",\n\t\t\"127.0.0.1:19092\",\n\t\t\"127.0.0.1:19092\",\n\t}, \"kafka\")\n\n\tticker := time.NewTicker(time.Millisecond)\n\tfor round := 0; round \u003c 3; round++ {\n\t\t\u003c-ticker.C\n\n\t\tcount := rand.Intn(100)\n\t\tm := message{\n\t\t\tKey:     strconv.FormatInt(time.Now().UnixNano(), 10),\n\t\t\tValue:   fmt.Sprintf(\"%d,%d\", round, count),\n\t\t\tPayload: fmt.Sprintf(\"%d,%d\", round, count),\n\t\t}\n\t\tbody, err := json.Marshal(m)\n\t\tif err != nil {\n\t\t\tlog.Fatal(err)\n\t\t}\n\n\t\tfmt.Println(string(body))\n\t\tif _, err := pusher.Push(context.Background(), []byte(strconv.FormatInt(time.Now().UnixNano(), 10)), body); err != nil {\n\t\t\tlog.Fatal(err)\n\t\t}\n\t}\n\n\tcmdline.EnterToContinue()\n}\n\n```\n\n## pulsar\n\nPulsar Pub/Sub framework\n\n### consumer example\n\nconfig.yaml\n\n```yaml\nName: pulsar\nBrokers:\n  - 127.0.0.1:6650\nTopic: pulsar\nConns: 2\nProcessors: 2\nSubscriptionName: pulsar\n\nTelemetry:\n  Name: pulsar\n  Endpoint: http://localhost:14268/api/traces\n  Sampler: 1.0\n  Natcher: jaeger\n```\n\nconsumer code\n\n```go\npackage main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"github.com/chenquan/go-queue/pulsar\"\n\t\"github.com/chenquan/go-queue/queue\"\n\t\"github.com/zeromicro/go-zero/core/logx\"\n\t\"github.com/zeromicro/go-zero/core/service\"\n\n\t\"github.com/zeromicro/go-zero/core/conf\"\n)\n\nfunc main() {\n\tvar c struct {\n\t\tpulsar.Conf\n\t\tservice.ServiceConf\n\t}\n\tconf.MustLoad(\"config.yaml\", \u0026c)\n\tc.MustSetUp()\n\n\tq := pulsar.MustNewQueue(c.Conf, queue.WithHandle(func(ctx context.Context, k, v []byte) error {\n\t\tlogx.WithContext(ctx).Info(fmt.Sprintf(\"=\u003e %s\\n\", v))\n\t\treturn nil\n\t}))\n\tdefer q.Stop()\n\tq.Start()\n}\n\n```\n\nproducer code\n\n```go\npackage main\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"github.com/chenquan/go-queue/pulsar\"\n\t\"log\"\n\t\"math/rand\"\n\t\"strconv\"\n\t\"time\"\n\n\t\"github.com/zeromicro/go-zero/core/cmdline\"\n)\n\ntype message struct {\n\tKey     string `json:\"key\"`\n\tValue   string `json:\"value\"`\n\tPayload string `json:\"message\"`\n}\n\nfunc main() {\n\tpusher := pulsar.NewPusher([]string{\n\t\t\"127.0.0.1:19092\",\n\t\t\"127.0.0.1:19092\",\n\t\t\"127.0.0.1:19092\",\n\t}, \"pulsar\")\n\n\tticker := time.NewTicker(time.Millisecond)\n\tfor round := 0; round \u003c 3; round++ {\n\t\t\u003c-ticker.C\n\n\t\tcount := rand.Intn(100)\n\t\tm := message{\n\t\t\tKey:     strconv.FormatInt(time.Now().UnixNano(), 10),\n\t\t\tValue:   fmt.Sprintf(\"%d,%d\", round, count),\n\t\t\tPayload: fmt.Sprintf(\"%d,%d\", round, count),\n\t\t}\n\t\tbody, err := json.Marshal(m)\n\t\tif err != nil {\n\t\t\tlog.Fatal(err)\n\t\t}\n\n\t\tfmt.Println(string(body))\n\n\t\tif _, err := pusher.Push(context.Background(), []byte(strconv.FormatInt(time.Now().UnixNano(), 10)), body); err != nil {\n\t\t\tlog.Fatal(err)\n\t\t}\n\t}\n\n\tcmdline.EnterToContinue()\n}\n\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchenquan%2Fgo-queue","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchenquan%2Fgo-queue","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchenquan%2Fgo-queue/lists"}