Как получить доступ к одной и той же БД из двух разных приложений весенней загрузки - PullRequest
1 голос
/ 11 июля 2020

У меня есть 2 приложения микросервиса Spring и я хочу, чтобы они обращались к одной и той же БД. Но оба приложения создают разные базы данных, когда я их запускаю. Файлы Application.yml:

Service 1:

server.port: 8002

logging:
  level:
    org:
      springframework:
        jdbc:
          core:
            DEBUG

spring:
  application:
    name: movie
  datasource:
    url: jdbc:h2:mem:movie_service
    driver-class-name: org.h2.Driver
  h2:
    console:
      enabled: true

eureka:
  client:
    serviceUrl:
      defaultZone: ${EUREKA_URI:http://localhost:8001/eureka}
    registryFetchIntervalSeconds: 1
  instance:
    leaseRenewalIntervalInSeconds: 1
    #preferIpAddress: true
eureka.instance.prefer-ip-address: false

Service 2:

server.port: 8003

spring:
  application.name: client
  datasource:
    url: jdbc:h2:mem:movie_service
    driver-class-name: org.h2.Driver
  h2:
    console:
      enabled: true

logging:
  level:
    org:
      springframework:
        jdbc:
          core:
            DEBUG

eureka:
  client:
    serviceUrl:
      defaultZone: ${EUREKA_URI:http://localhost:8001/eureka}
    registryFetchIntervalSeconds: 1
  instance:
    leaseRenewalIntervalInSeconds: 1
    #preferIpAddress: true
eureka.instance.prefer-ip-address: false

Я думал, что, указав тот же URL, одна служба создаст базу данных а другой просто воспользуется им.

1 Ответ

2 голосов
/ 11 июля 2020

H2 - это база данных в памяти, используйте базу данных, которая позволяет нескольким пользователям.

UPDATE:

на самом деле, я не был точен. В H2 есть режим сервера, но вы используете базу данных, встроенную в ваше приложение.

Вам нужна база данных как служба, а затем вы можете подключиться из своих приложений микросервисов к этой запущенной базе данных.

В качестве примечания: распространенным антипаттерном является то, что разные микросервисы обращаются к одной и той же базе данных.

База данных - если она вообще является общей - должна использоваться только экземплярами одного компонента микросервиса.

...