使用 Akka Java 连接 MongoDB

该代码示例展示了如何通过Java驱动在AkkaActor系统中连接MongoDB数据库,初始化MongoClient和MongoDatabase,然后在Actor的onReceive方法中处理查询请求,根据接收到的消息查询特定文档并打印结果。最后,系统终止时关闭MongoClient连接。
摘要由CSDN通过智能技术生成

注意:该内容使用chatgpt实现,准确性待定,不过可以成为学习素材。 

import akka.actor.ActorRef;
import akka.actor.ActorSystem;
import akka.actor.Props;
import akka.actor.UntypedAbstractActor;
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;

public class MongoDBActor extends UntypedAbstractActor {

    private MongoClient mongoClient;
    private MongoDatabase mongoDatabase;
    private MongoCollection<Document> mongoCollection;

    public MongoDBActor(String host, int port, String dbName, String collectionName) {
        mongoClient = new MongoClient(host, port);
        mongoDatabase = mongoClient.getDatabase(dbName);
        mongoCollection = mongoDatabase.getCollection(collectionName);
    }

    public static Props props(String host, int port, String dbName, String collectionName) {
        return Props.create(MongoDBActor.class, () -> new MongoDBActor(host, port, dbName, collectionName));
    }

    @Override
    public void onReceive(Object message) throws Throwable {
        if (message instanceof String) {
            String query = (String) message;
            Document result = mongoCollection.find(Document.parse(query)).first();
            if (result != null) {
                System.out.println(result.toJson());
            } else {
                System.out.println("No result found.");
            }
        } else {
            unhandled(message);
        }
    }

    @Override
    public void postStop() throws Exception {
        mongoClient.close();
    }

    public static void main(String[] args) {
        ActorSystem system = ActorSystem.create("MongoDBExample");
        ActorRef mongoDBActor = system.actorOf(MongoDBActor.props("localhost", 27017, "myDatabase", "myCollection"));

        // 查询集合中id为1的文档
        mongoDBActor.tell("{id: 1}", ActorRef.noSender());

        system.terminate();
    }
}

上面的代码演示了如何在一个 Actor 中使用 Java 驱动程序连接 MongoDB 并从集合中查询文档。首先,在 MongoDBActor 中创建一个 MongoClient 和 MongoDatabase 实例,并在构造函数中设置集合名称。然后在 onReceive 方法中接收消息,查询指定条件的文档,并将结果打印到控制台。最后,使用 ActorSystem 创建一个 ActorRef 并发送消息进行测试。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值