मेरे पास एक आराम आधारित स्प्रिंग-बूट माइक्रोसर्विस है जिसे मैं एक मोंगो डेटाबेस और दूसरे डेटाबेस में एप्लिकेशन डेटा में प्रमाणीकरण और सत्र डेटा स्टोर करने के लिए कॉन्फ़िगर करना चाहता हूं।

मेरा वर्तमान सेटअप ज्यादातर काम करता है, सिवाय इसके कि वसंत मेरे सभी दस्तावेज़ दोनों डेटाबेस में बना रहा है। मैंने @Document() एनोटेशन को देखा, लेकिन इसमें डेटाबेस के उपयोग के लिए कोई पैरामीटर नहीं है।

मोंगो शेल में:

> show dbs
admin                 0.000GB
authentication        0.000GB
prospect              0.000GB

> use authentication
switched to db authentication

> show collections
credentials
credentials_authorities
prospects
roles
sessions

> use prospect
switched to db prospect

> show collections
prospects

application.properties:

com.mycompany.prospect.domainName=mycompany.com

spring.data.mongodb.host=mongodb-service
spring.data.mongodb.port=27017

com.mycompany.prospect.server.appDatabase=prospect
com.mycompany.prospect.server.sessionDatabase=authentication

HttpSessionConfig.java

@Configuration
@EnableMongoHttpSession()
public class HttpSessionConfig {

  private final Logger logger = LoggerFactory.getLogger(this.getClass());

  @Bean
  public CookieSerializer cookieSerializer(
      @Value("${com.mycompany.prospect.domainName:localhost}")
          final String domainName) {

    logger.info("Configuring DefaultCookieSerializer with DomainName '{}'.", domainName);

    final DefaultCookieSerializer serializer = new DefaultCookieSerializer();
    serializer.setDomainName(domainName);
    serializer.setUseHttpOnlyCookie(true);
    return serializer;
  }

  @Bean
  public JdkMongoSessionConverter jdkMongoSessionConverter() {
    return new JdkMongoSessionConverter();
  }
}

MongoConfig.java

@Configuration
@EnableMongoRepositories
public class MongoConfig {

  private final Environment env;

  public MongoConfig(Environment env) {
    this.env = env;
  }

  @Bean("applicationTemplate")
  @Qualifier("applicationTemplate")
  public MongoTemplate mongoTemplate(
      final MappingMongoConverter mappingMongoConverter, final MongoClient mongoClient) {
    final String databaseName =
        env.getRequiredProperty("com.mycompany.prospect.server.appDatabase");

    final MongoDbFactory dbFactory = new SimpleMongoDbFactory(mongoClient, databaseName);
    return new MongoTemplate(dbFactory, mappingMongoConverter);
  }

  @Bean("mongoOperations")
  @Qualifier("mongoOperations")
  @Primary
  public MongoTemplate mongoOperations(
      final MappingMongoConverter mappingMongoConverter, final MongoClient mongoClient) {
    final String databaseName =
        env.getRequiredProperty("com.mycompany.prospect.server.sessionDatabase");
    final MongoDbFactory dbFactory = new SimpleMongoDbFactory(mongoClient, databaseName);
    final MongoTemplate mongoTemplate = new MongoTemplate(dbFactory, mappingMongoConverter);
    return mongoTemplate;
  }    
}

Prospect.java

@Document(collection = "prospects")
public class Prospect {
  @Id private String prospectId;

  @TextIndexed() private String businessName;

  public String getProspectId() {
    return prospectId;
  }

  public void setProspectId(String prospectId) {
    this.prospectId = prospectId;
  }

  public String getBusinessName() {
    return businessName;
  }

  public void setBusinessName(final String businessName) {
    this.businessName = businessName;
  }
}    

मैं चाहता हूं कि संभावना संग्रह केवल संभावना डेटाबेस में मौजूद हो।

मैंने डेटाबेस को छोड़ने और सेवाओं को पुनरारंभ करने का प्रयास किया है, लेकिन वे पुनरारंभ करने पर वापस आते हैं। इसे ठीक से कैसे करें इस पर कोई विचार?

1
Joshua Kaldon 3 पद 2017, 21:33

1 उत्तर

सबसे बढ़िया उत्तर

यदि आपका एप्लिकेशन एकल मोंगोडब इंस्टेंस की ओर इशारा करता है और आप प्रत्येक वेब अनुरोध के आधार पर डेटाबेस स्विच करना चाहते हैं। आप इस नमूना उदाहरण पर एक नज़र डाल सकते हैं, https://github.com/Loki-Afro/multi-tenant-spring-mongodb/blob/master/src/main/java/com/github/zarathustra/mongo/MultiTenantMongoDbFactory.java

PS:- मुझे यह तब मिला, जब मैं बहु-किरायेदारी हासिल करने के लिए शोध कर रहा था

0
Sunand Padmanabhan 4 पद 2017, 18:36