Java 如何在没有地址声明的情况下在领事馆注册服务

Java 如何在没有地址声明的情况下在领事馆注册服务,java,microservices,service-discovery,consul,Java,Microservices,Service Discovery,Consul,使用concur,我希望服务使用HTTP端点/v1/Agent/service/register向concur代理注册自身。唯一的问题是服务可能绑定到不同的IP地址(第一个实例10.0.0.1,第二个10.0.0.2,等等),我希望concur根据请求的IP地址自动设置地址 比如说, “服务实例1(10.0.0.1)”将{name:'svs',id:'svs-01'}发送到/v1/agent/Service/register并将其注册为{name:'svs',id:'svs-01',地址:10.

使用concur,我希望服务使用HTTP端点
/v1/Agent/service/register
向concur代理注册自身。唯一的问题是服务可能绑定到不同的IP地址(第一个实例10.0.0.1,第二个10.0.0.2,等等),我希望concur根据请求的IP地址自动设置地址

比如说,

“服务实例1(10.0.0.1)”将
{name:'svs',id:'svs-01'}
发送到
/v1/agent/Service/register
并将其注册为
{name:'svs',id:'svs-01',地址:10.0.0.1}

“服务实例2(10.0.0.2)”将
{name:'svs',id:'svs-02'}
发送到
/v1/agent/Service/register
并将其注册为
{name:'svs',id:'svs-02',地址:10.0.0.2}

根据服务注册查询中是否缺少地址字段,如果未提供地址,地址将默认为代理的地址。但这不是我需要的


我试图在运行时检测服务的ip地址,但它可能有几个网络接口,很难区分它们。

您需要从运行它们的机器上注册服务。领事真的是天生的。您需要使用代理,而不是HTTP API

顺便说一句,如果您仍然希望直接从concur服务器注册该远程服务,那么您需要做额外的工作,以便检测它在哪个IP上运行,并提交一个已经正确的json配置。 要知道,运行状况检查不适用于远程服务,因为这些运行状况检查将在本地运行

请在此处查看一位领事的回答:

代理使用Catalog API报告其应用程序的状态 向领事服务器提供服务和检查。说话很不寻常 直接连接到catalogapi,而concur实际上不支持运行 没有领事代理人的支票。如果在节点上运行代理,则可以 通过使用代理API注册服务并检查该节点 用这样的物体做卷曲-X摆:

还可以在代理服务器中定义健康检查 配置文件。代理运行检查并管理保持 随着运行状况的更改,使用 目录API的内部版本

如果您在一台领事服务器上调用此代理API,则 也可以让他们进行检查,但这是不寻常的 如果要检查服务器的运行状况,则要使用的配置 另一个节点上的服务。通过在每个节点上运行代理,您可以获得一些 基本的“节点是可访问的”检查由领事自己免费,你 保持对服务的了解,并在 它们正在运行(Catalog API允许领事服务器响应 你整个舰队都有问题,但在领事馆,特工是 真相的来源,并保持目录的最新,以匹配正在发生的事情 上)


我的假设正确吗?您将这些HTTP请求发送给领事主机,而不是承载服务的服务器上运行的本地领事代理?@Tborra是的。我正在使用这个api包装器github.com/Ecwid/concur-api与主服务器对话
您需要从运行它们的机器注册您的服务。
-这是不经意的:)这就是我现在测试concur的方式:concur agent-server local,我没有使用CatalogAPI,我在问题中提到了它