【问题标题】:Weird problem with Java Spring + RabbitMQ + DockerJava Spring + RabbitMQ + Docker 的奇怪问题
【发布时间】:2019-09-14 14:10:08
【问题描述】:

我尝试使用上面编写的技术运行简单的测试项目,但出现奇怪的异常并且找不到解决方案。 我使用 Windows 7 和 docker 在主机上工作:192.168.99.100。 rabbitmq 的管理面板,地址为http://192.168.99.100:15672,运行良好。

应用程序属性:

spring.rabbitmq.host=192.168.99.100
spring.rabbitmq.port=15672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
jsa.rabbitmq.queue=jsa.queue

组件:

@Component
public class Consumer {

    @RabbitListener(queues="${jsa.rabbitmq.queue}")
    public void recievedMessage(String msg) {
        System.out.println("Recieved Message: " + msg);
    }
}

堆栈跟踪:

2019-09-14 16:00:54.677 ERROR 4532 --- [68.99.100:15672] c.r.c.impl.ForgivingExceptionHandler     : An unexpected connection driver error occured

    java.net.SocketException: Socket Closed
        at java.net.SocketInputStream.socketRead0(Native Method) ~[na:1.8.0_201]
        at java.net.SocketInputStream.socketRead(SocketInputStream.java:116) ~[na:1.8.0_201]
        at java.net.SocketInputStream.read(SocketInputStream.java:171) ~[na:1.8.0_201]
        at java.net.SocketInputStream.read(SocketInputStream.java:141) ~[na:1.8.0_201]
        at java.io.BufferedInputStream.fill(BufferedInputStream.java:246) ~[na:1.8.0_201]
        at java.io.BufferedInputStream.read(BufferedInputStream.java:265) ~[na:1.8.0_201]
        at java.io.DataInputStream.readUnsignedByte(DataInputStream.java:288) ~[na:1.8.0_201]
        at com.rabbitmq.client.impl.Frame.readFrom(Frame.java:91) ~[amqp-client-4.0.2.jar:4.0.2]
        at com.rabbitmq.client.impl.SocketFrameHandler.readFrame(SocketFrameHandler.java:164) ~[amqp-client-4.0.2.jar:4.0.2]
        at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:571) ~[amqp-client-4.0.2.jar:4.0.2]
        at java.lang.Thread.run(Thread.java:748) [na:1.8.0_201]

为什么主机被部分读取,我该如何处理?

【问题讨论】:

  • 看起来服务器崩溃或重新启动。检查服务器日志。
  • 感谢您的回答。是的,服务器确实启动和停止了几次。你能告诉我是什么原因以及我该如何处理吗?我使用来自 docker hub 的图像 rabbitmq:management。也许是图像的原因?
  • 你是对的,它有帮助=)谢谢你这么匹配)

标签: java spring-boot docker rabbitmq


【解决方案1】:

RabbitMQ 代理默认侦听端口 5672,因此将配置更改为使用 5672 而不是管理控制台端口 15672:

spring.rabbitmq.port=5672

如果您的 RabbitMQ 配置为仅使用 TLS,则端口可能是 5671 而不是 5672。

参考:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-12
    • 2013-08-19
    • 2011-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-29
    相关资源
    最近更新 更多