【问题标题】:MassTransit with SQS/SNS. Messages not publishing to SQS queues带有 SQS/SNS 的 MassTransit。消息未发布到 SQS 队列
【发布时间】:2021-10-07 21:33:59
【问题描述】:

我正在尝试使用他们文档中提到的公共交通配置将 SNS 主题订阅到 SQS 队列。消息已发布,但不会出现在 SQS 队列中。 SQS 队列名称:“test”,SNS 主题名称:“kbbico-manual-to-replace”。

public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllers();

            services.AddMassTransit(x =>
            {
                /*Configuring a receive endpoint will use the message topology to create and subscribe SNS topics to SQS queues so that 
                 * published messages will be delivered to the receive endpoint queue*/
                x.AddConsumer<OfferConsumer>();
                x.UsingAmazonSqs((context, cfg) =>
                {
                    cfg.Host("ca-central-1", h =>
                    {
                        //h.Config(AmazonSQSConfig);
                        //h.Config(AmazonSnsConfig);                     
                    });

                    cfg.ReceiveEndpoint("test", e =>
                    {
                        e.ConfigureConsumer<OfferConsumer>(context);
                        // disable the default topic binding
                        //e.ConfigureConsumeTopology = false;

                        //Topic subscibed to a recieve endpoint
                        e.Subscribe("kbbico-manual-to-replace", s =>
                        {
                            // set topic attributes
                            s.TopicAttributes["DisplayName"] = "Public Event Topic";
                            s.TopicSubscriptionAttributes["some-subscription-attribute"] = "some-attribute-value";
                            s.TopicTags.Add("environment", "development");
                        });
                    });
                    cfg.ConfigureEndpoints(context);
                });


            });
            services.AddMassTransitHostedService();
        }

【问题讨论】:

    标签: .net asp.net-core amazon-sqs amazon-sns masstransit


    【解决方案1】:

    您没有配置消费者,因此消息很可能被移动到 _skipped 队列(或者可能是 SQS DLQ)。

    此外,主机配置中的cfg.ConfigureEndpoints() 根本不属于那里。它应该出现在总线配置的最后。

    【讨论】:

    • 添加了消费者并将 cfg.ConfigureEndpoints() 移动到最后也没有帮助。我也尝试添加 h.config(amazonsqsconfig) 但没有运气。 @克里斯帕特森
    • 启用调试日志以查看在 SQS/SNS 上创建的内容。老实说,它适用于除您以外的所有人。
    • 另外,check permissions,请确保您能够创建主题、队列、订阅等。所需权限列表位于该链接的底部。
    • { "Version": "2012-10-17", "Id": "arn:aws:sqs:ca-central-1:767848882003:undefined/SQSDefaultPolicy", "Statement": [ { "Sid": "topic-subscription-arn:aws:sns:ca-central-1:767848882003:kbbico-manual-to-replace", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "SQS:SendMessage", "Resource": "arn:aws:sqs:ca-central-1:767848882003:test", "Condition": { "ArnLike": { "aws: SourceArn": "arn:aws:sns:ca-central-1:767848882003:kbbico-manual-to-replace" } } } ] }
    • 以上是我用来发布消息的 SQS 队列“test”的访问策略
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-04
    • 1970-01-01
    • 2020-06-11
    • 2011-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多