当前位置: 首页 > 知识库问答 >
问题:

使用SQS/SNS的MassTransit。未发布到SQS队列的消息

凤安然
2023-03-14

我试图使用他们文档中提到的masstransit配置将SNS主题订阅到SQS队列。消息已发布,但不会出现在SQS队列中。SQS队列名称:“测试”,SNS主题名称:“kbbico手动替换”。

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();
        }

共有1个答案

长孙昀
2023-03-14

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

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

 类似资料:
  • 我通过自定义管理的KMS密钥有一个加密的SQS队列和SNS主题。目前,我正在使用下面链接中所述的类似类型的SQS策略,它可以正常工作SQS策略 但是如果我使用下面的SQS策略,它就不起作用了。出于安全原因,我不想将主体设置为“*”。有人能解释一下为什么会发生这种情况吗

  • 我创建了一个SNS主题,通过cli发布来自Cloudformation的所有信息。然而,当我检查队列时,它没有接收任何SNS消息。我通过订阅我的电子邮件来验证SNS是否正常工作,所以问题似乎出在队列和SNS之间的连接上。然而,我没有发现我的语法有任何问题。一、 据我所知,他们严格遵循了亚马逊的文档。 猛击:

  • 我正在使用AWS SQS和死信队列。 这可能吗?我是不是缺少了一个配置选项? 问候你,伊多

  • 是否有一种方法可以使用AWS CLI列出特定SQS队列订阅的所有AWS SNS主题? 我已经知道如何看到一个SNS主题上的订阅者列表,但这只有在我知道SNS主题的名称时才起作用。在这种情况下,我只知道SQS队列的名称。 我在网上搜索什么也找不到。

  • 我试图用SQS FIFO队列探索SNS FIFO主题,这就是我刚才尝试的。我创建了SNS FIFO主题和SQS FIFO队列,并将FIFO队列订阅到FIFO主题。根据文档,对于上述设置,每当我们将消息发布到SNS FIFO队列时,它都应该将该消息扇出到SQS队列,但它没有发生。我能够获得PublishResult#getMessageId()表示发布部分正在成功进行,但队列中没有任何消息。由于SN

  • 我正在使用Lambda函数将消息推送到SQS队列。消息放入SQS队列后,我需要触发其他Lambda函数来处理队列中的消息。 我认为我们可以使用SNS实现这一点。我是AWS服务新手,请建议在SNS的帮助下基于SQS队列消息触发Lambda函数的解决方案。