类com.mongodb.TransactionOptions源码实例Demo

下面列出了怎么用com.mongodb.TransactionOptions的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: aion   文件: MongoDB.java
@Override
public boolean open() {
    if (isOpen()) {
        return true;
    }

    LOG.info("Initializing MongoDB at {}", mongoClientUri);

    // Get the client and create a session for this instance
    MongoClient mongoClient =
            MongoConnectionManager.inst().getMongoClientInstance(this.mongoClientUri);
    ClientSessionOptions sessionOptions =
            ClientSessionOptions.builder()
                    .causallyConsistent(true)
                    .defaultTransactionOptions(
                            TransactionOptions.builder()
                                    .readConcern(ReadConcern.DEFAULT)
                                    .writeConcern(WriteConcern.MAJORITY)
                                    .readPreference(ReadPreference.nearest())
                                    .build())
                    .build();
    this.clientSession = mongoClient.startSession(sessionOptions);

    // Get the database and our collection. Mongo takes care of creating these if they don't
    // exist
    MongoDatabase mongoDb = mongoClient.getDatabase(MongoConstants.AION_DB_NAME);

    // Gets the collection where we will be saving our values. Mongo creates it if it doesn't
    // yet exist
    this.collection = mongoDb.getCollection(this.name, BsonDocument.class);

    LOG.info("Finished opening the Mongo connection");
    return isOpen();
}
 
/**
 * Taken from <a href="https://docs.mongodb.com/manual/core/transactions/">https://docs.mongodb.com</a>
 */
@Test
public void shouldExecuteTransactions() {
    try (
        // creatingMongoDBContainer {
        final MongoDBContainer mongoDBContainer = new MongoDBContainer()
        // }
    ) {

        // startingMongoDBContainer {
        mongoDBContainer.start();
        // }

        final String mongoRsUrl = mongoDBContainer.getReplicaSetUrl();
        assertNotNull(mongoRsUrl);
        final MongoClient mongoSyncClient = MongoClients.create(mongoRsUrl);
        mongoSyncClient.getDatabase("mydb1").getCollection("foo")
            .withWriteConcern(WriteConcern.MAJORITY).insertOne(new Document("abc", 0));
        mongoSyncClient.getDatabase("mydb2").getCollection("bar")
            .withWriteConcern(WriteConcern.MAJORITY).insertOne(new Document("xyz", 0));

        final ClientSession clientSession = mongoSyncClient.startSession();
        final TransactionOptions txnOptions = TransactionOptions.builder()
            .readPreference(ReadPreference.primary())
            .readConcern(ReadConcern.LOCAL)
            .writeConcern(WriteConcern.MAJORITY)
            .build();

        final String trxResult = "Inserted into collections in different databases";

        TransactionBody<String> txnBody = () -> {
            final MongoCollection<Document> coll1 =
                mongoSyncClient.getDatabase("mydb1").getCollection("foo");
            final MongoCollection<Document> coll2 =
                mongoSyncClient.getDatabase("mydb2").getCollection("bar");

            coll1.insertOne(clientSession, new Document("abc", 1));
            coll2.insertOne(clientSession, new Document("xyz", 999));
            return trxResult;
        };

        try {
            final String trxResultActual = clientSession.withTransaction(txnBody, txnOptions);
            assertEquals(trxResult, trxResultActual);
        } catch (RuntimeException re) {
            throw new IllegalStateException(re.getMessage(), re);
        } finally {
            clientSession.close();
            mongoSyncClient.close();
        }
    }
}
 
@Override
public TransactionOptions getTransactionOptions() {
    return wrapped.getTransactionOptions();
}
 
@Override
public void startTransaction(final TransactionOptions transactionOptions) {
     wrapped.startTransaction(transactionOptions);
}
 
源代码5 项目: morphia   文件: BaseMorphiaSession.java
@Override
public TransactionOptions getTransactionOptions() {
    return session.getTransactionOptions();
}
 
源代码6 项目: morphia   文件: BaseMorphiaSession.java
@Override
public void startTransaction(final TransactionOptions transactionOptions) {
    session.startTransaction(transactionOptions);
}
 
源代码7 项目: morphia   文件: BaseMorphiaSession.java
@Override
public <T> T withTransaction(final TransactionBody<T> transactionBody, final TransactionOptions options) {
    return session.withTransaction(transactionBody, options);
}
 
/**
 * Gets the transaction options.  Only call this method of the session has an active transaction
 *
 * @return the transaction options
 */
TransactionOptions getTransactionOptions();
 
/**
 * Start a transaction in the context of this session with the given transaction options. A transaction can not be started if there is
 * already an active transaction on this session.
 *
 * @param transactionOptions the options to apply to the transaction
 *
 * @mongodb.server.release 4.0
 */
void startTransaction(TransactionOptions transactionOptions);
 
 类所在包
 类方法
 同包方法