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;

Reply via email to