I am trying to connect to MongoDB (3.6.3) using mongodb-driver-reactivestreams (v1.7.1), but subscribing on the publishers just hangs. Strangely, Wireshark captures *stuff* happening between MongoDB and my application, so things are definitely moving. Any ideas on what might I be missing?
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
import com.mongodb.async.client.MongoClientSettings;
import com.mongodb.connection.ClusterSettings;
import com.mongodb.reactivestreams.client.MongoClient;
import com.mongodb.reactivestreams.client.MongoClients;
import com.mongodb.reactivestreams.client.MongoDatabase;
import org.bson.Document;
import org.reactivestreams.Subscriber;
import org.reactivestreams.Subscription;
import java.util.Collections;
import java.util.concurrent.CountDownLatch;
public enum MongoDbTest {; public static void main(String[] args) throws InterruptedException { MongoCredential credential = MongoCredential.createMongoCRCredential(
"vyazici", "optimus_data", "secret".toCharArray());
ClusterSettings clusterSettings = ClusterSettings
.hosts(Collections.singletonList(new ServerAddress("foo.bar.com"))) MongoClientSettings clientSettings = MongoClientSettings
.clusterSettings(clusterSettings)
try (MongoClient client = MongoClients.create(clientSettings)) { MongoDatabase database = client.getDatabase("optimus_data"); CountDownLatch latch = new CountDownLatch(1);
database.listCollections().subscribe(new Subscriber<Document>() { public void onSubscribe(Subscription s) { System.out.println("subscription"); public void onNext(Document document) { System.out.println("next: " + document); public void onError(Throwable error) { System.out.println("error"); public void onComplete() { System.out.println("complete"); System.out.println("await");MongoDB shell version v3.6.3
MongoDB server version: 3.6.3
rs_optimus:PRIMARY> show collections