Skip to content

Commit 6451770

Browse files
committed
Mongo reactive client should use Netty transport
1 parent 22d8b35 commit 6451770

File tree

1 file changed

+18
-1
lines changed
  • extensions/mongodb-client/runtime/src/main/java/io/quarkus/mongodb/runtime

1 file changed

+18
-1
lines changed

extensions/mongodb-client/runtime/src/main/java/io/quarkus/mongodb/runtime/MongoClients.java

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@
3535
import org.bson.codecs.pojo.Conventions;
3636
import org.bson.codecs.pojo.PojoCodecProvider;
3737
import org.bson.codecs.pojo.PropertyCodecProvider;
38+
import org.slf4j.Logger;
39+
import org.slf4j.LoggerFactory;
3840

3941
import com.mongodb.AuthenticationMechanism;
4042
import com.mongodb.Block;
@@ -51,18 +53,22 @@
5153
import com.mongodb.connection.ClusterConnectionMode;
5254
import com.mongodb.connection.ClusterSettings;
5355
import com.mongodb.connection.ConnectionPoolSettings;
56+
import com.mongodb.connection.NettyTransportSettings;
5457
import com.mongodb.connection.ServerSettings;
5558
import com.mongodb.connection.SocketSettings;
5659
import com.mongodb.connection.SslSettings;
5760
import com.mongodb.event.CommandListener;
5861
import com.mongodb.event.ConnectionPoolListener;
5962
import com.mongodb.reactivestreams.client.ReactiveContextProvider;
6063

64+
import io.netty.channel.socket.SocketChannel;
6165
import io.quarkus.credentials.CredentialsProvider;
6266
import io.quarkus.credentials.runtime.CredentialsProviderFinder;
6367
import io.quarkus.mongodb.MongoClientName;
6468
import io.quarkus.mongodb.impl.ReactiveMongoClientImpl;
6569
import io.quarkus.mongodb.reactive.ReactiveMongoClient;
70+
import io.vertx.core.Vertx;
71+
import io.vertx.core.buffer.impl.VertxByteBufAllocator;
6672

6773
/**
6874
* This class is sort of a producer for {@link MongoClient} and {@link ReactiveMongoClient}.
@@ -86,20 +92,23 @@ public class MongoClients {
8692
private final Map<String, ReactiveMongoClient> reactiveMongoClients = new HashMap<>();
8793
private final Instance<ReactiveContextProvider> reactiveContextProviders;
8894
private final Instance<MongoClientCustomizer> customizers;
95+
private final Vertx vertx;
8996

9097
public MongoClients(MongodbConfig mongodbConfig, MongoClientSupport mongoClientSupport,
9198
Instance<CodecProvider> codecProviders,
9299
Instance<PropertyCodecProvider> propertyCodecProviders,
93100
Instance<CommandListener> commandListeners,
94101
Instance<ReactiveContextProvider> reactiveContextProviders,
95-
@Any Instance<MongoClientCustomizer> customizers) {
102+
@Any Instance<MongoClientCustomizer> customizers,
103+
Vertx vertx) {
96104
this.mongodbConfig = mongodbConfig;
97105
this.mongoClientSupport = mongoClientSupport;
98106
this.codecProviders = codecProviders;
99107
this.propertyCodecProviders = propertyCodecProviders;
100108
this.commandListeners = commandListeners;
101109
this.reactiveContextProviders = reactiveContextProviders;
102110
this.customizers = customizers;
111+
this.vertx = vertx;
103112

104113
try {
105114
//JDK bug workaround
@@ -255,6 +264,14 @@ private MongoClientSettings createMongoConfiguration(String name, MongoClientCon
255264
MongoClientSettings.Builder settings = MongoClientSettings.builder();
256265

257266
if (isReactive) {
267+
// we supports just NIO for now
268+
if (!vertx.isNativeTransportEnabled()) {
269+
var nettyStreaming = NettyTransportSettings.nettyBuilder()
270+
.allocator(VertxByteBufAllocator.POOLED_ALLOCATOR)
271+
.eventLoopGroup(vertx.nettyEventLoopGroup())
272+
.socketChannelClass(SocketChannel.class).build();
273+
settings.transportSettings(nettyStreaming);
274+
}
258275
reactiveContextProviders.stream().findAny().ifPresent(settings::contextProvider);
259276
}
260277

0 commit comments

Comments
 (0)