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

使用MassTransit配置SNS订阅SQS队列后消息未进入队列问题

问题排查与解决步骤
  • 首先删除冲突的自动端点配置代码
    你手动声明了名称为test的接收端点后,后续调用的cfg.ConfigureEndpoints(context)会自动根据消费者类型生成默认队列端点,会覆盖或干扰你手动配置的端点规则,直接删除这行即可。
  • 检查AWS权限与区域匹配
    你当前注释了Host中AWS配置的部分,要确认运行环境的默认AWS凭证属于ca-central-1区域,且开通了以下最小权限:
    • SNS相关:sns:Subscribe、sns:Publish、sns:GetTopicAttributes
    • SQS相关:sqs:CreateQueue、sqs:SendMessage、sqs:ReceiveMessage、sqs:DeleteMessage
  • 适配非MassTransit格式的消息
    如果你的SNS消息不是通过MassTransit的Publish方法发送,而是直接通过AWS SDK或其他工具发送的原始JSON消息,需要在接收端点配置中添加e.UseRawJsonSerializer();来关闭默认的消息格式校验,避免消息被过滤。
  • 确认订阅创建状态
    登录AWS控制台进入ca-central-1区域的SNS服务,查看kbbico-manual-to-replace主题的订阅列表,确认存在指向test队列的订阅,且状态为已确认,跨账号订阅需要手动点击确认链接。
  • 可选:关闭默认拓扑绑定
    如果你不需要MassTransit自动为OfferConsumer对应的消息类型创建SNS主题订阅,可以打开注释的e.ConfigureConsumeTopology = false;配置,避免多余的订阅规则干扰。
修正后的配置代码
public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers();

    services.AddMassTransit(x =>
    {
        x.AddConsumer<OfferConsumer>();
        x.UsingAmazonSqs((context, cfg) =>
        {
            cfg.Host("ca-central-1", h =>
            {
                // 若运行环境无默认AWS凭证,取消注释并填入你的配置
                //h.Config(AmazonSQSConfig);
                //h.Config(AmazonSnsConfig);                     
            });

            cfg.ReceiveEndpoint("test", e =>
            {
                // 不需要默认拓扑绑定可打开下一行
                //e.ConfigureConsumeTopology = false;
                // 接收非MassTransit格式的原始JSON消息可打开下一行
                //e.UseRawJsonSerializer();
                e.ConfigureConsumer<OfferConsumer>(context);

                e.Subscribe("kbbico-manual-to-replace", s =>
                {
                    s.TopicAttributes["DisplayName"] = "Public Event Topic";
                    s.TopicSubscriptionAttributes["some-subscription-attribute"] = "some-attribute-value";
                    s.TopicTags.Add("environment", "development");
                });
            });
            // 删除原来的ConfigureEndpoints调用
        });
    });
    services.AddMassTransitHostedService();
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 13:39:02