我需要以维护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
的灵活性来管理类型。
我在这里缺少什么吗?谢谢。
要配置主题标签/属性,您需要配置主题拓扑,这是通过配置发布拓扑来完成的。
例如,要为Message
类型添加标签,您可以指定:
configurator.Publish<Message>(p =>
{
p.TopicTags.Add("hello", "world");
});