You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Dapper将MassTransit连接Postgres以存储Sagas?

MassTransit PostgreSQL 实现方案:无需依赖 EF Core + Npgsql

不是只能通过EF Core + Npgsql实现,MassTransit本身提供了PostgreSQL的原生支持,完全可以不依赖EF Core完成配置。

具体实现步骤:

  1. 安装必要的NuGet包
    直接安装MassTransit官方维护的PostgreSQL包和Npgsql驱动:

    Install-Package MassTransit.PostgreSql
    Install-Package Npgsql
    
  2. 配置Bus使用PostgreSQL
    不需要依赖SqlClient,直接用CreateUsingPostgres方法配置,示例代码:

    var connectionString = "Host=localhost;Port=5432;Database=mt_postgres;Username=postgres;Password=your_pass;";
    
    var busControl = Bus.Factory.CreateUsingPostgres(cfg =>
    {
        // 方式一:直接传入连接字符串
        cfg.UseNpgsql(connectionString);
    
        // 方式二:分步配置数据库信息(和连接字符串二选一即可)
        // cfg.Host("localhost", 5432, "mt_postgres");
        // cfg.Username("postgres");
        // cfg.Password("your_pass");
    
        // 配置接收端点和消费者
        cfg.ReceiveEndpoint("order-processing-queue", e =>
        {
            e.Consumer<OrderProcessingConsumer>();
        });
    });
    
    // 启动Bus
    await busControl.StartAsync(new CancellationTokenSource(TimeSpan.FromSeconds(10)).Token);
    try
    {
        // 业务逻辑
    }
    finally
    {
        await busControl.StopAsync();
    }
    

补充说明:

  • 官方文档的MSSQL示例确实依赖SqlClient,但PostgreSQL的实现是独立的,MassTransit.PostgreSql包已经封装了和PostgreSQL交互的逻辑,不需要EF Core作为中间层。
  • 如果你的业务本身已经在用EF Core管理PostgreSQL数据,可以选择结合使用,但这不是必须的选项。
  • 确保PostgreSQL连接字符串格式正确,避免因格式问题导致的连接失败。

内容的提问来源于stack exchange,提问作者Soerx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 16:00:09