我无法使用 Spring Boot 应用程序连接到 MongoDB 和 RabbitMQ

问题描述 投票:0回答:1

一切都可以在本地运行,但是当我尝试运行 docker-compose 文件时,我遇到了与 RabbitMQ 和 MongoDB 的连接问题。我遇到的错误如下

micro-streaming-analytics  | 2024-03-12T15:34:55.525Z  INFO 8 --- [localhost:27017] org.mongodb.driver.cluster               : Exception in monitor thread while connecting to server localhost:27017
micro-streaming-analytics  | 
micro-streaming-analytics  | com.mongodb.MongoSocketOpenException: Exception opening socket
micro-streaming-analytics  |    at com.mongodb.internal.connection.SocketStream.lambda$open$0(SocketStream.java:84) ~[mongodb-driver-core-4.11.1.jar!/:na]
micro-streaming-analytics  |    at java.base/java.util.Optional.orElseThrow(Optional.java:403) ~[na:na]
micro-streaming-analytics  |    at com.mongodb.internal.connection.SocketStream.open(SocketStream.java:84) ~[mongodb-driver-core-4.11.1.jar!/:na]
micro-streaming-analytics  |    at com.mongodb.internal.connection.InternalStreamConnection.open(InternalStreamConnection.java:211) ~[mongodb-driver-core-4.11.1.jar!/:na]
micro-streaming-analytics  |    at com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.lookupServerDescription(DefaultServerMonitor.java:196) ~[mongodb-driver-core-4.11.1.jar!/:na]
micro-streaming-analytics  |    at com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:156) ~[mongodb-driver-core-4.11.1.jar!/:na]
micro-streaming-analytics  |    at java.base/java.lang.Thread.run(Thread.java:1583) ~[na:na]
micro-streaming-analytics  | Caused by: java.net.ConnectException: Connection refused
micro-streaming-analytics  |    at java.base/sun.nio.ch.Net.pollConnect(Native Method) ~[na:na]
micro-streaming-analytics  |    at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:682) ~[na:na]
micro-streaming-analytics  |    at java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:542) ~[na:na]
micro-streaming-analytics  |    at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:592) ~[na:na]
micro-streaming-analytics  |    at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327) ~[na:na]
micro-streaming-analytics  |    at java.base/java.net.Socket.connect(Socket.java:751) ~[na:na]
micro-streaming-analytics  |    at com.mongodb.internal.connection.SocketStreamHelper.initialize(SocketStreamHelper.java:76) ~[mongodb-driver-core-4.11.1.jar!/:na]
micro-streaming-analytics  |    at com.mongodb.internal.connection.SocketStream.initializeSocket(SocketStream.java:104) ~[mongodb-driver-core-4.11.1.jar!/:na]
micro-streaming-analytics  |    at com.mongodb.internal.connection.SocketStream.open(SocketStream.java:78) ~[mongodb-driver-core-4.11.1.jar!/:na]
micro-streaming-analytics  |    ... 4 common frames omitted
micro-streaming-analytics  | 
micro-streaming-analytics  | 2024-03-12T15:34:55.716Z  INFO 8 --- [        Timer-0] c.e.MSA.rabbitmq.AnalyticsConsumer       : Resetting timer --> 2024-03-12T15:34:55.716197748Z
micro-streaming-analytics  | 2024-03-12T15:34:56.279Z  INFO 8 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port 8080 (http) with context path ''
micro-streaming-analytics  | 2024-03-12T15:34:56.281Z  INFO 8 --- [           main] o.s.a.r.c.CachingConnectionFactory       : Attempting to connect to: [localhost:5672]
micro-streaming-analytics  | 2024-03-12T15:34:56.283Z  INFO 8 --- [           main] o.s.a.r.l.SimpleMessageListenerContainer : Broker not available; cannot force queue declarations during start: java.net.ConnectException: Connection refused
micro-streaming-analytics  | 2024-03-12T15:34:56.289Z  INFO 8 --- [ntContainer#0-1] o.s.a.r.c.CachingConnectionFactory       : Attempting to connect to: [localhost:5672]
micro-streaming-analytics  | 2024-03-12T15:34:56.291Z ERROR 8 --- [ntContainer#0-1] o.s.a.r.l.SimpleMessageListenerContainer : Failed to check/redeclare auto-delete queue(s).
micro-streaming-analytics  | 
micro-streaming-analytics  | org.springframework.amqp.AmqpConnectException: java.net.ConnectException: Connection refused
micro-streaming-analytics  |    at org.springframework.amqp.rabbit.support.RabbitExceptionTranslator.convertRabbitAccessException(RabbitExceptionTranslator.java:61) ~[spring-rabbit-3.1.2.jar!/:3.1.2]
micro-streaming-analytics  |    at org.springframework.amqp.rabbit.connection.AbstractConnectionFactory.createBareConnection(AbstractConnectionFactory.java:606) ~[spring-rabbit-3.1.2.jar!/:3.1.2]
micro-streaming-analytics  |    at org.springframework.amqp.rabbit.connection.CachingConnectionFactory.createConnection(CachingConnectionFactory.java:727) ~[spring-rabbit-3.1.2.jar!/:3.1.2]
micro-streaming-analytics  |    at org.springframework.amqp.rabbit.connection.ConnectionFactoryUtils.createConnection(ConnectionFactoryUtils.java:257) ~[spring-rabbit-3.1.2.jar!/:3.1.2]
micro-streaming-analytics  |    at org.springframework.amqp.rabbit.core.RabbitTemplate.doExecute(RabbitTemplate.java:2249) ~[spring-rabbit-3.1.2.jar!/:3.1.2]
micro-streaming-analytics  |    at org.springframework.amqp.rabbit.core.RabbitTemplate.execute(RabbitTemplate.java:2222) ~[spring-rabbit-3.1.2.jar!/:3.1.2]
micro-streaming-analytics  |    at org.springframework.amqp.rabbit.core.RabbitTemplate.execute(RabbitTemplate.java:2202) ~[spring-rabbit-3.1.2.jar!/:3.1.2]
micro-streaming-analytics  |    at org.springframework.amqp.rabbit.core.RabbitAdmin.getQueueInfo(RabbitAdmin.java:467) ~[spring-rabbit-3.1.2.jar!/:3.1.2]
micro-streaming-analytics  |    at org.springframework.amqp.rabbit.core.RabbitAdmin.getQueueProperties(RabbitAdmin.java:451) ~[spring-rabbit-3.1.2.jar!/:3.1.2]
micro-streaming-analytics  |    at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.attemptDeclarations(AbstractMessageListenerContainer.java:1960) ~[spring-rabbit-3.1.2.jar!/:3.1.2]
micro-streaming-analytics  |    at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.redeclareElementsIfNecessary(AbstractMessageListenerContainer.java:1924) ~[spring-rabbit-3.1.2.jar!/:3.1.2]
micro-streaming-analytics  |    at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.initialize(SimpleMessageListenerContainer.java:1480) ~[spring-rabbit-3.1.2.jar!/:3.1.2]
micro-streaming-analytics  |    at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.run(SimpleMessageListenerContainer.java:1322) ~[spring-rabbit-3.1.2.jar!/:3.1.2]
micro-streaming-analytics  |    at java.base/java.lang.Thread.run(Thread.java:1583) ~[na:na]
micro-streaming-analytics  | Caused by: java.net.ConnectException: Connection refused
micro-streaming-analytics  |    at java.base/sun.nio.ch.Net.pollConnect(Native Method) ~[na:na]
micro-streaming-analytics  |    at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:682) ~[na:na]
micro-streaming-analytics  |    at java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:542) ~[na:na]
micro-streaming-analytics  |    at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:592) ~[na:na]
micro-streaming-analytics  |    at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327) ~[na:na]
micro-streaming-analytics  |    at java.base/java.net.Socket.connect(Socket.java:751) ~[na:na]
micro-streaming-analytics  |    at com.rabbitmq.client.impl.SocketFrameHandlerFactory.create(SocketFrameHandlerFactory.java:61) ~[amqp-client-5.19.0.jar!/:5.19.0]
micro-streaming-analytics  |    at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:1249) ~[amqp-client-5.19.0.jar!/:5.19.0]
micro-streaming-analytics  |    at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:1198) ~[amqp-client-5.19.0.jar!/:5.19.0]
micro-streaming-analytics  |    at org.springframework.amqp.rabbit.connection.AbstractConnectionFactory.connectAddresses(AbstractConnectionFactory.java:652) ~[spring-rabbit-3.1.2.jar!/:3.1.2]
micro-streaming-analytics  |    at org.springframework.amqp.rabbit.connection.AbstractConnectionFactory.connect(AbstractConnectionFactory.java:621) ~[spring-rabbit-3.1.2.jar!/:3.1.2]
micro-streaming-analytics  |    at org.springframework.amqp.rabbit.connection.AbstractConnectionFactory.createBareConnection(AbstractConnectionFactory.java:568) ~[spring-rabbit-3.1.2.jar!/:3.1.2]
micro-streaming-analytics  |    ... 12 common frames omitted

我尝试用

localhost
改变
mongodb://mongo:27017
。我尝试添加一些睡眠命令,但没有一个起作用。这是我的 Dockerfile 和 docker-compose 文件

docker-compose.yml

version: '3.8'

services:
  rabbitmq:
    image: rabbitmq:3.13.0-management
    environment:
      - RABBITMQ_DEFAULT_USER=test
      - RABBITMQ_DEFAULT_PASS=mypassword
    ports:
      - "5672:5672"
      - "15672:15672"

  mongodb:
    image: mongo:latest
    ports:
      - "27017:27017"
    environment:
      MONGO_INITDB_ROOT_USERNAME: test
      MONGO_INITDB_ROOT_PASSWORD: test
      MONGO_INITDB_DATABASE: amplia

  mongo_ui:
    image: mongo-express
    container_name: mongo_ui
    ports:
      - "8081:8081"
    environment:
      ME_CONFIG_MONGODB_ADMINUSERNAME: test
      ME_CONFIG_MONGODB_ADMINPASSWORD: test
      ME_CONFIG_BASICAUTH_USERNAME: test
      ME_CONFIG_BASICAUTH_PASSWORD: test
      ME_CONFIG_MONGODB_SERVER: mongodb
    depends_on:
      - mongodb
    command: ["sh", "-c", "sleep 30 && node app"]

  micro-streaming-analytics:
    image: 'micro-streaming-analytics:latest'
    build:
      context: .
    container_name: micro-streaming-analytics
    depends_on:
      - mongodb
      - rabbitmq
    ports:
      - 8080:8080
    environment:
      SPRING_DATASOURCE_URL: mongodb://test:test@mongodb:27017/amplia
      MONGODB_USERNAME: test
      MONGODB_PASSWORD: test
      RABBITMQ_USERNAME: test
      RABBITMQ_PASSWORD: mypassword
      RABBITMQ_QUEUE_NAME: analytics
      RABBITMQ_POOLING_TIME: 30000
      RABBITMQ_ADDRESSES: rabbitmq
      MSA_HOST: http://localhost:8080/
    command: ["sh", "-c", "sleep 30 && java -jar MSA-0.0.1-SNAPSHOT.jar"]

这是我的Dockerfile

# Stage 1: Build stage
FROM eclipse-temurin:21-jdk AS builder

WORKDIR /app

# Install Maven
RUN apt-get update && apt-get install -y maven

# Copy the Maven configuration
COPY pom.xml .
COPY msa-dev .

# Copy the application source code
COPY src ./src

# Run the script to generate environment variables
RUN ./msa-dev generate-env-variable
RUN ./msa-dev wait-components

# Build the application
RUN mvn -B clean package

# Stage 2: Run stage
FROM eclipse-temurin:21-jdk

WORKDIR /app

# Copy the JAR file built in the previous stage
COPY --from=builder /app/target/MSA-0.0.1-SNAPSHOT.jar .

# Expose the port your application runs on
EXPOSE 8080

# Command to run the application
CMD ["java", "-jar", "MSA-0.0.1-SNAPSHOT.jar"]
mongodb spring-boot docker docker-compose rabbitmq
1个回答
0
投票

您是否尝试过在 Dockerfile 中配置特定网络,而不是使用默认网络?

networks:
  mongo-rabbit-spring:

然后在每个容器中指定

  networks:
   - spring-postgres
© www.soinside.com 2019 - 2024. All rights reserved.