Skip to content

Commit 778648f

Browse files
movebeanrockyang
andauthored
注册实例时支持指定实例id (#39)
* 注册实例时支持指定实例id * quickstart/provider examples 添加注释,标明实例id不是必填 --------- Co-authored-by: rockyang <rockyang@tencent.com>
1 parent ebf9ee1 commit 778648f

File tree

4 files changed

+18
-0
lines changed

4 files changed

+18
-0
lines changed

examples/quickstart/provider.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,13 +202,18 @@ int ProviderServer::Register() {
202202
register_req.SetHealthCheckFlag(true);
203203
register_req.SetHealthCheckType(polaris::kHeartbeatHealthCheck);
204204
register_req.SetTtl(kHeartbeatTtl);
205+
// 实例id不是必填,如果不填,服务端会默认生成一个唯一Id,否则当提供实例id时,需要保证实例id是唯一的
206+
std::string provided_instance_id = "instance-provided-id";
207+
register_req.SetInstanceId(provided_instance_id);
205208

206209
// 注册实例
207210
auto ret_code = provider_->Register(register_req, instance_id_);
208211
if (ret_code != polaris::kReturnOk && ret_code != polaris::kReturnExistedResource) {
209212
std::cout << "register instance with error:" << polaris::ReturnCodeToMsg(ret_code).c_str() << std::endl;
210213
return ret_code;
211214
}
215+
std::cout << "register instance with instance id:" << instance_id_ << std::endl;
216+
sleep(1);
212217

213218
// 启动心跳上报线程
214219
heartbeat_thread_ = std::unique_ptr<std::thread>(new std::thread([=] {

include/polaris/provider.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,11 @@ class InstanceRegisterRequest : Noncopyable {
106106
/// @param campus 节点所在园区
107107
void SetLocation(const std::string& region, const std::string& zone, const std::string& campus);
108108

109+
/// @brief 设置实例id,可选,默认会在服务端生产实例id
110+
///
111+
/// @param instance_id 提供的实例id
112+
void SetInstanceId(const std::string& instance_id);
113+
109114
class Impl;
110115
Impl& GetImpl() const;
111116

polaris/provider/request.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,10 @@ void InstanceRegisterRequest::SetLocation(const std::string& region, const std::
6363
impl_->campus_ = campus;
6464
}
6565

66+
void InstanceRegisterRequest::SetInstanceId(const std::string& instance_id) {
67+
impl_->instance_id_ = instance_id;
68+
}
69+
6670
// 反注册请求
6771
InstanceDeregisterRequest::InstanceDeregisterRequest(const std::string& service_token, const std::string& instance_id) {
6872
impl_ = new Impl();
@@ -149,6 +153,9 @@ v1::Instance* InstanceRegisterRequest::Impl::ToPb() const {
149153
// 设置实例信息 注册不设置 id 和 health status
150154
instance->mutable_host()->set_value(host_);
151155
instance->mutable_port()->set_value(static_cast<uint32_t>(port_));
156+
if (!instance_id_.empty()) {
157+
instance->mutable_id()->set_value(instance_id_);
158+
}
152159
if (!vpc_id_.empty()) {
153160
instance->mutable_vpc_id()->set_value(vpc_id_);
154161
}

polaris/provider/request.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ class InstanceRegisterRequest::Impl : public ProviderRequestBase {
8686
bool health_check_flag_; ///< 是否开启健康检查,默认不开启
8787
optional<HealthCheckType> health_check_type_; ///< 健康检查类型
8888
optional<int> ttl_; ///< ttl超时时间,单位:秒
89+
std::string instance_id_; ///< 实例本身提供的实例id,可选
8990

9091
// 位置信息
9192
std::string region_;

0 commit comments

Comments
 (0)