如何使用 Cloud Foundry Rabbit MQ 服务启用涡轮流

Posted

技术标签:

【中文标题】如何使用 Cloud Foundry Rabbit MQ 服务启用涡轮流【英文标题】:How to enable Turbine stream using Cloud foundry Rabbit MQ service 【发布时间】:2017-01-14 07:05:04 【问题描述】:

我正在尝试将 Hystrix CircuitBreaker 集成到我的示例应用程序中。我有两个应用程序,一个充当服务器,另一个充当客户端。 CircuitBreaker 工作正常,我可以看到 Hystrix.stream 表单客户端。

现在我正在使用 Turbine 流在一个 DashBoard 中尝试多个客户端。

在服务器端,我添加了 2 个依赖项,如下所示:

spring-cloud-starter-turbine-stream
spring-cloud-starter-stream.rabbit

并在应用程序上注释@EnableTurbineStream。

在客户端我添加了以下依赖项:

spring-cloud-starter-hystrix-stream
spring-cloud-starter-stream.rabbit

这两个应用程序都部署在 Pivotal Cloud Foundry 中并绑定到用于 PCF 的 Rabbit Mq 服务。

在客户端部署中,我看到以下异常:

java.io.IOException :null
Caused by : com.rabbitmq.client.ShutDownSignalException :  channel error     :protocol method : #method<channel.close><reply-code=406, reply-test=PRECONDITION-FAILED - equivalent arg 'type' for exchange 'spring.cloud.hystrix.stream' in vhost '' : receieved 'topic' but current is 'Direct', class-id=40, methid-id=10>

在访问涡轮服务器时,我得到了

data : type : ping


Management port on turbine server is set to -1.

客户端和服务器是否需要任何 MQ 配置才能在 Rabbit MQ 中推送 Hystrix 流?任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

客户端错误告诉您您正在尝试声明一个已经存在但类型冲突的交换。您可以通过更改交换名称或删除旧名称来修复它。或者干脆删除服务并在 Cloud Foundry 中重新创建它,

【讨论】:

感谢@Dave 的回复。我尝试重新创建该服务并且它起作用了。 现在我正在尝试在 git hub 示例之后使用 Cloud Foundry 断路器服务。 github.com/spring-cloud-samples/traveler。我已经在 CF 中部署了代理和公司应用程序,并在 CF 中部署了与断路器服务相关的代理。我可以在代理应用程序上看到 Hystrix 流。但 CF 的断路器服务仪表板中没有数据。我可以在代理日志中看到同样的错误。你能帮忙解决这个问题吗,我是否缺少任何依赖项? 还有一个问题是来自 CF 的断路器服务与服务发现相关联。是否可以在不使用服务发现的情况下使用 CF 的断路器服务?

以上是关于如何使用 Cloud Foundry Rabbit MQ 服务启用涡轮流的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Spring Boot 部署到 Cloud Foundry?

将微服务部署到 Cloud Foundry

Cloud Foundry 上的 Keycloak 独立集群

GRPC 在 Cloud Foundry 中如何工作? GoRouter 不支持 HTTP2

如何在SAP云平台的Cloud Foundry环境下添加新的Service(服务)

如何在SAP云平台的Cloud Foundry环境下添加新的Service(服务)