【问题标题】:AmqpConnectException: ConnectException: Connection refused: connectAmqpConnectException:ConnectException:连接被拒绝:连接
【发布时间】:2018-08-26 07:48:30
【问题描述】:

按照 Josh Long 在 Youtube 上的教程,尝试使用 Spring Cloud 向 RabbitMQ 发送消息。

操作系统:Windows

GIT 网址: https://github.com/joshlong/bootiful-microservices/tree/master/bootiful-microservices-edgware

我导入了reservation-client、eureka-service、config-service。我成功地启动了所有服务。

每次我使用 JSON 有效负载访问服务时,都会收到以下错误消息。

输入网址:http://localhost:9999/reservations 正文:{"reservationName":"Dr.Who"}

输出 JSON:

{
    "timestamp": 1521277278436,
    "status": 500,
    "error": "Internal Server Error",
    "exception": "org.springframework.amqp.AmqpConnectException",
    "message": "java.net.ConnectException: Connection refused: connect",
    "path": "/reservations"
}

我在控制台中收到以下错误。

2018-03-17 02:00:43.401  INFO [reservation-client,,,] 6188 --- [           main] .s.c.n.e.s.EurekaAutoServiceRegistration : Updating port to 9999
2018-03-17 02:00:43.408  INFO [reservation-client,,,] 6188 --- [           main] c.example.ReservationClientApplication   : Started ReservationClientApplication in 36.047 seconds (JVM running for 36.941)
2018-03-17 02:01:15.851  INFO [reservation-client,,,] 6188 --- [nio-9999-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring FrameworkServlet 'dispatcherServlet'
2018-03-17 02:01:15.854  INFO [reservation-client,,,] 6188 --- [nio-9999-exec-1] o.s.web.servlet.DispatcherServlet        : FrameworkServlet 'dispatcherServlet': initialization started
2018-03-17 02:01:16.034  INFO [reservation-client,,,] 6188 --- [nio-9999-exec-1] o.s.web.servlet.DispatcherServlet        : FrameworkServlet 'dispatcherServlet': initialization completed in 180 ms
2018-03-17 02:01:16.116  WARN [reservation-client,65c06760307f62f8,65c06760307f62f8,true] 6188 --- [nio-9999-exec-1] o.s.c.n.zuul.web.ZuulHandlerMapping      : No routes found from RouteLocator
2018-03-17 02:01:18.316 ERROR [reservation-client,65c06760307f62f8,65c06760307f62f8,true] 6188 --- [nio-9999-exec-1] o.s.c.sleuth.instrument.web.TraceFilter  : Uncaught exception thrown

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.amqp.AmqpConnectException: java.net.ConnectException: Connection refused: connect
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:982) ~[spring-webmvc-4.3.13.RELEASE.jar:4.3.13.RELEASE]
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872) ~[spring-webmvc-4.3.13.RELEASE.jar:4.3.13.RELEASE]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:661) ~[tomcat-embed-core-8.5.23.jar:8.5.23]
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) ~[spring-webmvc-4.3.13.RELEASE.jar:4.3.13.RELEASE]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) ~[tomcat-embed-core-8.5.23.jar:8.5.23]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) [tomcat-embed-core-8.5.23.jar:8.5.23]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.23.jar:8.5.23]
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) ~[tomcat-embed-websocket-8.5.23.jar:8.5.23]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.23.jar:8.5.23]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.23.jar:8.5.23]
    at org.springframework.boot.web.filter.ApplicationContextHeaderFilter.doFilterInternal(ApplicationContextHeaderFilter.java:55) ~[spring-boot-1.5.9.RELEASE.jar:1.5.9.RELEASE]
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.13.RELEASE.jar:4.3.13.RELEASE]

即使我使用 Kafka 而不是 RabbitMQ binder,我也会遇到连接错误。

有人可以帮忙吗?所有示例似乎都是在基于 Unix 的平台上实现的。请帮忙。

【问题讨论】:

    标签: microservices spring-cloud spring-cloud-stream spring-kafka spring-rabbit


    【解决方案1】:

    这仅仅意味着你要么没有安装 RabbitMQ,要么它没有在默认值 (localhost:5672) 上运行。 Kafka 也一样,你需要安装并运行一个代理。

    我看到 Josh 提供了一个 docker-compose.yml 来在 docker 映像中运行 RabbitMQ,或者您可以将 RabbitMQ 安装为服务。

    【讨论】:

    • 我没有安装 RabbitMQ 或 Kafka。我正在使用适当的活页夹,因此我猜我不需要安装 RabbitMQ 或 Kafka?我可以在不实际安装 RabbitMQ 或 Kafka 的情况下完成这项工作吗?
    • 否;你不能;绑定器将目的地“绑定”到必须存在的代理。 Spring for Apache Kafka 提供了一个嵌入式 kafka 代理(通常用于测试),这是可能的,因为 Kafka 是用 Scala 编写并在 JVM 中运行的。 RabbitMQ 是用 Erlang 编写的,不能在 JVM 中运行。 spring-cloud-stream-samples 有一个示例,展示了如何使用嵌入式 kafka 代理进行测试。
    • 非常感谢。我将安装 RabbitMQ 并继续。也感谢您对嵌入式 Kafka 的建议 :)
    猜你喜欢
    • 2017-08-08
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 2017-08-10
    • 2015-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多