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

问题描述 投票:0回答:1

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

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

不幸的是,到目前为止,我已经尝试了很多方法,但是没有一个方法允许我在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的灵活性来管理类型。

我在这里缺少什么吗?谢谢。

c# amazon-sqs amazon-sns masstransit
1个回答
1
投票

要配置主题标签/属性,您需要配置主题拓扑,这是通过配置发布拓扑来完成的。

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

configurator.Publish<Message>(p =>
{
    p.TopicTags.Add("hello", "world");
});
© www.soinside.com 2019 - 2024. All rights reserved.