|tagger||Li Zhanhui <firstname.lastname@example.org>||Wed Oct 13 07:00:49 2021 +0000|
This is to release v1.0-beta6
|author||Zhanhui Li <email@example.com>||Wed Oct 13 14:42:56 2021 +0800|
|committer||GitHub <firstname.lastname@example.org>||Wed Oct 13 14:42:56 2021 +0800|
Adapt to protocol v1.0-alpha1 (#29) Adapt to protocol v1.0-alpha1, including the following changes * Import latest protocol files * Replace multiplex RPC with 3 separate RPCs, PollCommand, ReportThreadStackTrace, ReportMessageConsumptionVerificationResult
Apache RocketMQ supports two styles of APIs to acknowledge messages once they are successfully processed.
Either of them is widely adopted by products. Per message acknowledgement simplifies SDK implementation while selective approach is more performant considering that fewer RPCs are required.
Classes of this project are designed to be interface oriented. This paradigm makes dependency injection possible. DI is especially helpful when writing unit tests.
Generally, we follow Google C++ Code Style. A few exceptions are made to maintain API compatibility.
When introducing a third-party dependency or raising version of a dependency, make sure it is back-off friendly. For example,
if "com_google_googletest" not in native.existing_rules(): http_archive( name = "com_google_googletest", sha256 = "b4870bf121ff7795ba20d20bcdd8627b8e088f2d1dab299a031c1034eddc93d5", strip_prefix = "googletest-release-1.11.0", urls = [ "https://github.com/google/googletest/archive/refs/tags/release-1.11.0.tar.gz", ], )
bazel build //...
bazel test //src/test/cpp/ut/...
VSCode + Clangd
Clangd is a really nice code completion tool. Clangd requires compile_commands.json to work properly. To generate the file, we need clone another repository along with the current one.
git clone email@example.com:grailbio/bazel-compilation-database.git
From current repository root,
Once the script completes, you should have compile_commands.json file in the repository root directory.
LLVM project has an extension for clangd. Please install it from the extension market.
The following configuration entries should be appended to your VSC settings file.
"C_Cpp.intelliSenseEngine": "Disabled", "C_Cpp.autocomplete": "Disabled", // So you don't get autocomplete from both extensions. "C_Cpp.errorSquiggles": "Disabled", // So you don't get error squiggles from both extensions (clangd's seem to be more reliable anyway). "clangd.path": "/Users/lizhanhui/usr/clangd_12.0.0/bin/clangd", "clangd.arguments": ["-log=verbose", "-pretty", "--background-index"], "clangd.onConfigChanged": "restart",
CLion + Bazel Plugin
Bazel also has a plugin for CLion.