Library / SDK
apache/rocketmq-client-go avatar
apache/rocketmq-client-go

Apache RocketMQ Client Go: Features and Setup Limits

Apache RocketMQ go client

1,408 stars445 forksGoApache-2.0

At a glance

What is it?
Apache RocketMQ Client Go gives Go applications access to RocketMQ producers, consumers, tracing, ACLs, and several delivery models. The project covers advanced messaging, but its README delegates installation and detailed configuration to separate documentation.
Who is it for?
Adopt Apache RocketMQ Client Go when a Go service must communicate with an Apache RocketMQ deployment and needs one or more of its documented producer or consumer modes. Do not select it from the feature list alone if self-contained setup instructions or detailed API semantics are required.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 13 days ago.
What is it written in?
Mainly Go, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 20, 2026, and from our analysis. They are not legal advice.

Editorial analysis

Why Go Applications Use Apache RocketMQ Client Go

Apache RocketMQ Client Go is a pure-Go client for applications that send or receive messages through Apache RocketMQ. It is aimed at Go services that already use or plan to operate a RocketMQ deployment, rather than teams looking for a broker, nameserver, or standalone message-processing service. The README sends users to the RocketMQ Quick Start for broker and nameserver setup, establishing that these infrastructure components sit outside this repository.

The v2.x feature list covers substantially more than basic queue publishing. Producers can send synchronously, asynchronously, in oneway mode, or in batches. The client also documents orderly messages, delayed messages, and transaction messages. That range can matter to applications with delivery rules beyond a basic request to publish a message, although the README does not explain the configuration or error handling required by each mode.

Consumer support includes push, pull, and broadcast models. The client also supports message tracing for publish and subscribe operations, ACLs for producers and consumers, and request-reply messaging. These capabilities make the library relevant to Go services that need a native client while remaining part of an existing RocketMQ architecture.

The repository layout follows those roles. The `producer/` package covers message publishing, while `consumer/` contains consumption support. Shared concepts are placed under `primitive/`, administrative operations have an `admin/` package, and files such as `api.go`, `config.go`, and `rlog/` occupy repository-wide roles. This is a client SDK with supporting packages and examples, not a replacement for the RocketMQ server.

RocketMQ Client Go Message and Consumption Paths

A synchronous producer operation waits for a return result, while an asynchronous operation follows a separate callback-oriented path. The README also lists oneway sending, which provides a mode without waiting for the same result path, and batch sending for grouping multiple messages into a client operation. The README does not document the corresponding Go method signatures, acknowledgment fields, timeout settings, or retry policies, so application code should not be written against these labels alone.

Specialized producer modes provide more specific ordering or timing semantics. Orderly messages are listed as supported, as are delayed messages. Transaction messages allow an application to coordinate message publication with a local transaction, but the README does not describe transaction callbacks or the producer state that an implementer must maintain. The linked `docs/Introduction.md` is the documented place to find step-by-step client instructions.

Consumers can select push, pull, or broadcast behavior. In the push model, the client delivers messages through application subscription code. In the pull model, the application controls when messages are requested. Broadcast changes how subscribed messages are distributed to consumers. The README does not document subscription expressions, offset management, reconsumption behavior, concurrency, or handler registration for these models.

Request-reply support introduces a request path and a response path, but the README does not identify timeout controls, correlation identifiers, or how a reply is returned to the original caller. Message tracing and ACLs are also documented as features without configuration examples in the README. An engineer therefore has enough information to identify candidate modes, but not enough to infer their complete runtime behavior.

Installation Requires Separate RocketMQ Setup Documentation

The README does not include a package installation command, a dependency configuration example, or a complete producer or consumer program. It points to `docs/Introduction.md` for step-by-step instructions and to the RocketMQ Quick Start for broker and nameserver setup. It would be inaccurate to manufacture a command or configuration file for this tutorial because neither appears in the README.

The repository's `go.mod` confirms the module path:

text
module github.com/apache/rocketmq-client-go/v2

go 1.13

This declaration establishes that consumers import the v2 module path. It does not confirm a preferred installation command, dependency version, producer initialization sequence, or credential format. It also declares Go 1.13 as the module's Go version, but the README does not state which later Go releases are tested.

For a first real use, the documented sequence begins outside the client library: use the RocketMQ Quick Start to prepare the broker and nameserver, then follow `docs/Introduction.md` to configure a producer or consumer in Go. The repository includes `examples/producer/`, `examples/consumer/`, and `examples/admin/` directories that may offer concrete implementations, but the README does not quote their source or explain how to run them. Readers needing a copy-and-run tutorial should start from the linked introduction rather than infer missing methods from the feature list.

Go Client Language Fit and Feature Trade-offs

The Go client has a documented v2.x feature set that includes common synchronous and asynchronous production, batch sending, delayed and transaction messages, multiple consumer models, tracing, ACLs, and request-reply messaging. Its language fit is therefore not limited to the simplest publish-and-subscribe workflow. Whether those features have the same interface depth or configuration granularity as a Java implementation cannot be determined because the README provides no cross-client comparison.

There is also a documentation trade-off. The feature list is concise, but it does not explain how to configure or operate most modes. `docs/Introduction.md` may fill part of that gap, and the repository's example directories provide additional locations to inspect. The README does not document mixed-language deployments, protocol compatibility, feature parity, or server-version compatibility matrices.

For a new Go service, the native client is a plausible choice when the service already depends on RocketMQ and its documented modes meet the workload. For a Java organization, choosing it solely because it offers a large named feature list would overlook runtime fit and API compatibility. The required delivery semantics should be checked against the introduction guide and examples before selecting an implementation language.

Release History and Upgrade Boundaries in RocketMQ Client Go

The repository is not archived, and its last push was on 2026-10-10. That indicates recent repository activity, but it should not be confused with release frequency. The most recent listed release is `v2.1.2`, published on 2023-09-11. The release list also contains `v2.1.2.rc1` and `v2.1.2.rc2`, indicating that release-candidate tags were part of the v2.1.2 sequence.

The gap between the last listed stable release and the last repository push means teams should examine repository changes directly before selecting a version. The README does not document a compatibility matrix, breaking-change policy, migration procedure, supported RocketMQ broker range, or Go release policy. It does describe the listed capabilities as applying to version 2.X, and `go.mod` declares Go 1.13, but neither statement establishes the full upgrade envelope.

The project is licensed under Apache License, Version 2.0. The repository includes `LICENSE` and `NOTICE` files, while the README links to the Apache license text and identifies the Apache Software Foundation copyright. Distribution workflows must account for the applicable license text and notices. That is a repository licensing requirement, not a claim about legal compliance for a particular deployment.

Before upgrading an existing producer or consumer, check the release notes and changes affecting the exact mode in use. Synchronous sends, transaction checks, consumer reconsumption, ACL credentials, and tracing are areas where undocumented configuration or behavior could matter. The repository's recent push date confirms activity, but the documented feature list alone does not establish upgrade safety.

Editorial conclusion

Adopt Apache RocketMQ Client Go when a Go service must communicate with an Apache RocketMQ deployment and needs one or more of its documented producer or consumer modes. Do not select it from the feature list alone if self-contained setup instructions or detailed API semantics are required. Verify first that the broker and nameserver match your environment, then consult docs/Introduction.md and confirm that its configuration and examples cover your required messaging mode.

Frequently asked questions

How do I install Apache RocketMQ Client Go?

The README does not include an installation command. It confirms the module path `github.com/apache/rocketmq-client-go/v2` and directs readers to `docs/Introduction.md` for client setup.

Which producer and consumer modes does Apache RocketMQ Client Go support?

The documented v2.x production modes include synchronous, asynchronous, oneway, batch, orderly, delayed, and transactional sending. Consumption supports push, pull, and broadcast models.

Does Apache RocketMQ Client Go include the broker and nameserver?

No. The README presents this repository as a Go client and directs users to the RocketMQ Quick Start for broker and nameserver setup.

What Go module path does Apache RocketMQ Client Go use?

The repository's `go.mod` declares `github.com/apache/rocketmq-client-go/v2` and declares Go 1.13.

What license applies to Apache RocketMQ Client Go?

The repository uses Apache License, Version 2.0. The README links to the license text and identifies the Apache Software Foundation copyright.

Official sources

  1. apache/rocketmq-client-go on GitHub
  2. License: Apache-2.0
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/apache-rocketmq-client-go.svg)](https://hysenlabs.com/projects/apache-rocketmq-client-go)

Was this useful?