This is an automated email from the ASF dual-hosted git repository. lizhanhui pushed a commit to branch cpp_dev in repository https://gitbox.apache.org/repos/asf/rocketmq-clients.git
commit e78c54c3f50a1f63e11ff0e66e094cf2c2df6d85 Author: Li Zhanhui <[email protected]> AuthorDate: Thu Jul 28 16:00:50 2022 +0800 Make client-id unique in case container clients retart --- cpp/source/rocketmq/ClientImpl.cpp | 1 + cpp/source/rocketmq/include/ClientImpl.h | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/cpp/source/rocketmq/ClientImpl.cpp b/cpp/source/rocketmq/ClientImpl.cpp index 0532d73..bccfe37 100644 --- a/cpp/source/rocketmq/ClientImpl.cpp +++ b/cpp/source/rocketmq/ClientImpl.cpp @@ -609,6 +609,7 @@ std::string ClientImpl::clientId() { std::string processID = std::to_string(getpid()); ss << processID << "#"; ss << sequence.fetch_add(1, std::memory_order_relaxed); + ss << "_" << MixAll::millisecondsOf(std::chrono::system_clock::now().time_since_epoch()); return ss.str(); } diff --git a/cpp/source/rocketmq/include/ClientImpl.h b/cpp/source/rocketmq/include/ClientImpl.h index f0b29f7..78d2759 100644 --- a/cpp/source/rocketmq/include/ClientImpl.h +++ b/cpp/source/rocketmq/include/ClientImpl.h @@ -228,6 +228,14 @@ private: void doVerify(std::string target, std::string command_id, MessageConstPtr message); + /** + * ClientID is required to remain unique in the following scenarios: + * + * 1. Create multiple clients; + * 2. Restart the client program in container deployments; + * + * @return Unique Client-ID + */ static std::string clientId(); std::string metricServiceEndpoint() const;
