MassTransit - AWS SQS/SNS - 向 SNS 添加标签

MassTransit - AWS SQS/SNS - add tags to SNS

我需要以维护 SNS 标签的方式配置 MassTransit 库。

我可以看到为创建的 SQS Queues 配置 Tags 的位置 - 并且按预期工作。但是,我需要为 MassTransit 创建的 SNS Topics 做类似的事情。

到目前为止,我尝试了一些方法,不幸的是,其中 none 允许我在 SNS 资源上创建标签。

public IBusControl GetServiceBus()
    {
        var serviceBus = Bus.Factory.CreateUsingAmazonSqs(sbc =>
        {
            sbc.Host("AmazonRegion", h =>
            {
                    h.Config(
                        new AmazonSimpleNotificationServiceConfig
                        {
                            ServiceURL = _configService.AmazonSnsServiceUrl
                            //Tags doesn't seems the be available here
                        });

                    h.Config(new AmazonSQSConfig
                    {
                        ServiceURL = _configService.AmazonSqsServiceUrl
                    });

                    h.AccessKey("AccessKey");
                    h.SecretKey("SecretKey");
            });
            sbc.ReceiveEndpoint("queueName", e =>
            {
                e.Consumer<IConsumer<Message>>(_container);
                e.Consumer<IConsumer<Fault<Message>>>(_container);
                e.QueueTags.Add("TestTag", "DEV");
                //Here I can define only Tags for the queue, not for the Topic though
            });
        });
        serviceBus.ConnectSendAuditObservers(_messageAuditStore);
        serviceBus.ConnectConsumeAuditObserver(_messageAuditStore);
        return serviceBus;
    }

我也试过像这样手动订阅:

e.Subscribe<T>(cfg =>
        {
            cfg.TopicTags.Add("TestTag", "test");
         });

但这也没有用。

我知道有一个选项可以使用 MassTransit 订阅预先创建的主题,但我觉得这是一个限制,我想使用 MassTransit 的灵​​活性来管理类型。

这里有我遗漏的东西吗? 谢谢。

要配置主题tags/attributes,您需要配置主题拓扑,这是通过配置发布拓扑来完成的。

例如,要为 Message 类型添加标签,您可以指定:

configurator.Publish<Message>(p =>
{
    p.TopicTags.Add("hello", "world");
});