问题标签 [spring-cloud-consul]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 使用 spring-cloud-consul 从领事读取空字符串
我正在我的 spring 应用程序中从基于文件的 .properties 文件迁移到基于 consul 的配置。我正在使用 spring-cloud-consul。在我的属性文件的早些时候,我有一个如下属性
test.key=
在spring应用类对应的字段是这样的
@Value("${test.key:defaultVal}")
private String testConsul;
在运行时,testConsul
string 的值是一个空字符串。但是在使用领事时,每当我输入test.key
没有值的键时,在运行时它都会被解析为null
.
无论如何我可以通过 consul 传递一个空字符串值吗?
spring-boot - 如何防止 sleuth / zipkin 跟踪 catalog-services-watch?
我在我的应用程序上启用了 zipkin,它工作正常,我看到了痕迹。我的应用程序正在使用 Consul 服务发现,我看到在 Zipkin 中跟踪了很多流量。
跟踪就像具有“catalog-services_watch”之类的名称并包含以下内容:
如何禁用这些跟踪?我试过 spring.sleuth.instrument.web.skipPattern 参数,但它不起作用。
consul - 领事配置
我是领事配置的新手。我的目标是将属性从application.properties
领事服务器移动。
我尝试了多种方法,但似乎无法做到正确。我需要遵循特定的文件夹结构吗?
下面是我的bootstrap.yml
:
如果我将 Consul 放在服务器上,Consul 可以使用相同的属性文件吗?如果是这样,我应该把它放在什么位置,参考consul.conf
,我应该把它放在什么位置?
consul - 来自单体应用的 consul 服务发现
我有一个单体应用程序 A,它需要通过服务发现调用微服务 B。Consul 是使用的服务发现服务器。微服务 B 在 Consul 服务器上注册。
从 A 我可以通过给出调用 Bhttp://hostname:portname/endpoint
如何通过服务发现做到这一点。
我尝试spring-cloud-dependencies
在 Monolith Application A 中添加依赖项,以便我可以使用它org.springframework.cloud.client.discovery.DiscoveryClient
来进行服务发现,但是这个 spring 依赖项引入了与我的 jboss 冲突的嵌入式 tomcat jar,因为两者都在8080
. 仅仅为了服务发现而将单体 A 转换为 springboot 应用程序不是一种选择。
是否有非 spring 选项可以从整体应用程序到 Consul 服务器进行服务发现?
spring-boot - 无法在 spring-boot 应用程序中从 Consul 读取配置
我正在创建一个Spring Boot
应用程序,它将从Consul
. 但我无法使用我的应用程序从 Consul 读取键值。以下是我正在尝试做的事情。
以下是我的主要课程:
我正在使用@Value
注释阅读领事属性:
我有我bootstrap.yml
的资源文件夹:
localhost:8500
Consul在我拥有文件文件的本地系统中启动并运行config/application/spring-boot-consul.yml
;
当我对应用程序进行分级时,它显示无法cassandra.host
在我的ConsulConfiguration
班级中绑定。从而停止应用程序。任何提示,我在这里做错了什么?
spring - 如何从 Spring Boot WebMvcTest 中排除自动配置
我正在尝试实现 Spring Boot Mock MVC 单元测试,并希望排除 spring-cloud-consul 自动配置以避免需要连接到远程服务。
看起来我应该能够通过以下方式实现这一目标:
但是,这似乎仍在尝试连接到远程领事,因为我无法在离线时运行此单元测试。
如果我将 -Ddebug 添加到单元测试运行配置中,我没有在排除项中看到此内容:
我想知道这是否是因为这个配置是在引导时加载的?
任何帮助将不胜感激,在此先感谢。
consul - Spring Cloud Consul 可以替代 consul-client 吗?
我正在学习 Consul。对 Spring Cloud Consul 和 Consul Client 之间的关系感到困惑。
我发现,在 Spring Boot 应用程序中,我们可以使用 @EnableDiscoveryClient 联系 Consul Agent。但是如果我想选举自己服务的leader,Spring Cloud Consul可以提供这些接口吗?还是需要在consul-client上中继?
java - MethodValidationPostProcessor 导致进一步的验证失败
我正在尝试将 Spring Cloud Consul 添加到启用了 Spring 验证的现有 Spring Boot 应用程序中。在我运行应用程序之前一切都很好,并且在验证带有注释的属性 bean 时失败@Validated
据我所知,这就是发生的事情:
MethodValidationPostProcessor
为属性 bean 创建一个代理
/li>CustomBeanValidationPostProcessor
启动并尝试验证代理字段并失败并显示以下内容:
这是重现该问题的最小项目:https ://github.com/bashnesnos/cas-spring-cloud-consul-issue
问题:
- 如果有人知道任何解决方法可以避免
MethodValidationPostProcessor
使用特定的 bean?
PS 我也为 Spring 创建了一张票https://github.com/spring-projects/spring-boot/issues/11249,但我想在社区中寻求解决方法可能更容易。
spring - spring consul 服务都是健康的,但是在不同的主机上不能互相访问
运行 Consul 和 spring-cloud-consul 我有五个微服务都已注册并显示为健康。这些服务中的每一个都在不同的 EC2 实例上运行。
使用在领事中注册的微服务的名称,我无法使用RestTemplate
如果服务 A 要使用以下代码调用服务 B
服务 A 抛出
即使将调试设置为,TRACE
我也看不到服务 B 上没有任何内容。
但是,如果我采用相同的设置并在单个 EC2 实例上运行它,一切都会按预期工作。
所有服务都在 docker 中运行,但 consul 代理运行在每个 EC2 实例的主机上。
每个微服务都有以下bootstrap.yml
集合
如果我给RestTemplate
它返回一个随机端点,Unknown host
以便它知道微服务在那里,它只是在它到达代码库之前被阻塞在某个地方。
如何进一步调试以找出服务在不同主机上运行时被拒绝的真正原因?
我尝试打开安全配置上的所有端口只是为了排除这种情况,但这没有任何区别。
编辑:查看 Consul UI - 我看到我的服务是在私有 IP (172.18.0.2) 下注册的。
这应该是一个面向公众的地址吗?
consul - 带有 zuul 和 consul 的 Spring Cloud 的 api-gateway 用于服务发现
我正在尝试创建一个小型 API 网关,它使用 Spring-cloud 和 Zuul 作为代理和 consul 作为服务发现。
以下是我的 bootstrap.properties:-
application.properties:-
我的 Java 应用程序:-
当我运行我的微服务和网关时,我可以看到我的领事已经注册了它们。但是,当我请求我的一项微服务(例如:- http://localhost:8084/refdataservice)时,我得到一个 ZuulException:转发错误。
我错过了什么吗?可能是什么原因?
以下是堆栈跟踪:-