You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rocketmq.apache.org by li...@apache.org on 2022/07/26 08:50:25 UTC
[rocketmq-clients] 01/01: Extract metric service endpoint parsing
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 319d18fb4a9cd87ad593949f7593239237067f0c
Author: Li Zhanhui <li...@gmail.com>
AuthorDate: Tue Jul 26 16:49:37 2022 +0800
Extract metric service endpoint parsing
---
cpp/source/rocketmq/ClientImpl.cpp | 44 ++++++++++++++++++--------------
cpp/source/rocketmq/include/ClientImpl.h | 2 ++
2 files changed, 27 insertions(+), 19 deletions(-)
diff --git a/cpp/source/rocketmq/ClientImpl.cpp b/cpp/source/rocketmq/ClientImpl.cpp
index b90035e..d47133a 100644
--- a/cpp/source/rocketmq/ClientImpl.cpp
+++ b/cpp/source/rocketmq/ClientImpl.cpp
@@ -179,19 +179,35 @@ void ClientImpl::start() {
telemetry_handle_ = client_manager_->getScheduler()->schedule(telemetry_functor, TELEMETRY_TASK_NAME,
std::chrono::minutes(5), std::chrono::minutes(5));
+ auto&& metric_service_endpoint = metricServiceEndpoint();
+ if (!metric_service_endpoint.empty()) {
+ std::weak_ptr<Client> client_weak_ptr(self());
+#ifdef DEBUG_METRIC_EXPORTING
+ opencensus::stats::StatsExporter::SetInterval(absl::Seconds(1));
+ opencensus::stats::StatsExporter::RegisterPushHandler(absl::make_unique<StdoutHandler>());
+#else
+ opencensus::stats::StatsExporter::SetInterval(absl::Minutes(1));
+#endif
+ SPDLOG_INFO("Export client metrics to {}", metric_service_endpoint);
+ opencensus::stats::StatsExporter::RegisterPushHandler(
+ absl::make_unique<OpencensusHandler>(metric_service_endpoint, client_weak_ptr));
+ }
+}
+
+std::string ClientImpl::metricServiceEndpoint() const {
auto endpoints = client_config_.metric.endpoints;
- std::string target;
+ std::string service_endpoint;
switch (endpoints.scheme()) {
case rmq::AddressScheme::IPv4: {
- target.append("ipv4:");
+ service_endpoint.append("ipv4:");
break;
}
case rmq::AddressScheme::IPv6: {
- target.append("ipv6:");
+ service_endpoint.append("ipv6:");
break;
}
case rmq::AddressScheme::DOMAIN_NAME: {
- target.append("dns:");
+ service_endpoint.append("dns:");
break;
}
default: {
@@ -202,25 +218,15 @@ void ClientImpl::start() {
bool first = true;
for (const auto& address : endpoints.addresses()) {
if (!first) {
- target.push_back(',');
+ service_endpoint.push_back(',');
} else {
first = false;
}
- target.append(address.host());
- target.push_back(':');
- target.append(std::to_string(address.port()));
+ service_endpoint.append(address.host());
+ service_endpoint.push_back(':');
+ service_endpoint.append(std::to_string(address.port()));
}
-
- std::weak_ptr<Client> client_weak_ptr(self());
-
-#ifdef DEBUG_METRIC_EXPORTING
- opencensus::stats::StatsExporter::SetInterval(absl::Seconds(1));
- opencensus::stats::StatsExporter::RegisterPushHandler(absl::make_unique<StdoutHandler>());
-#else
- opencensus::stats::StatsExporter::SetInterval(absl::Minutes(1));
-#endif
- SPDLOG_INFO("Export client metrics to {}", target);
- opencensus::stats::StatsExporter::RegisterPushHandler(absl::make_unique<OpencensusHandler>(target, client_weak_ptr));
+ return service_endpoint;
}
void ClientImpl::shutdown() {
diff --git a/cpp/source/rocketmq/include/ClientImpl.h b/cpp/source/rocketmq/include/ClientImpl.h
index 2a06a0f..f0b29f7 100644
--- a/cpp/source/rocketmq/include/ClientImpl.h
+++ b/cpp/source/rocketmq/include/ClientImpl.h
@@ -229,6 +229,8 @@ private:
void doVerify(std::string target, std::string command_id, MessageConstPtr message);
static std::string clientId();
+
+ std::string metricServiceEndpoint() const;
};
ROCKETMQ_NAMESPACE_END
\ No newline at end of file