公司网站建设应注意什么,200元自助网站建设,电子商务具体干嘛的,盐城网站优化方案1#xff09;问题#xff0c;Class MessageA 基类#xff0c;Class MessageB继承自MessageA#xff1b;
用bus.Publish方法本想把有些消息只发给B队列#xff0c;结果由于其继承关系A队列也获得了消息#xff1b;
解决方法用send#xff0c; Uri uri new Uri(RabbitM…1问题Class MessageA 基类Class MessageB继承自MessageA
用bus.Publish方法本想把有些消息只发给B队列结果由于其继承关系A队列也获得了消息
解决方法用send Uri uri new Uri(RabbitMqUriQueueB);var endPoint await _bus.GetSendEndpoint(uri);await endPoint.Send(MessageB);
2)在rabbitmq中设置 把B类型unbind掉应该就可以了 3可能的其他方式
Message Topology · MassTransit Message Topology
Message types are extensively leveraged in MassTransit, so making it easy to configure how those message types are used by topology seemed obvious.
Entity Name Formatters
Message Type
MassTransit 的exchanges,topics名称默认是消息名称可以通过如下改为别名.
Bus.Factory.CreateUsingRabbitMq(cfg { cfg.MessageOrderSubmitted(x { x.SetEntityName(omg-we-got-one); });
});
Its also possible to create a message-specific entity name formatter, by implementing IMessageEntityNameFormatterT and specifying it during configuration.
class FancyNameFormatterT :IMessageEntityNameFormatterT
{public string FormatEntityName(){// seriously, please dont do this, like, ever.return type(T).Name.ToString();}
}Bus.Factory.CreateUsingRabbitMq(cfg
{cfg.MessageOrderSubmitted(x {x.SetEntityNameFormatter(new FancyNameFormatterOrderSubmitted());});
});Its also possible to replace the entity name formatter for the entire topology.
class FancyNameFormatterT :IMessageEntityNameFormatterT
{public string FormatEntityName(){// seriously, please dont do this, like, ever.return type(T).Name.ToString();}
}class FancyNameFormatter :IEntityNameFormatter
{public FancyNameFormatter(IEntityNameFormatter original){_original original;}public string FormatEntityNameT(){if(T is OrderSubmitted)return we-got-one;return _original.FormatEntityNameT();}
}Bus.Factory.CreateUsingRabbitMq(cfg
{cfg.MessageOrderSubmitted(x {x.SetEntityNameFormatter(new FancyNameFormatter(cfg.MessageTopology.EntityNameFormatter));;});
});Attributes
EntityName
通过EntityName 熟悉修改消息名称
[EntityName(order-submitted)]
public record LegacyOrderSubmittedEvent{}
ConfigureConsumeTopology
ConfigureConsumeTopology 可选属性设置后决定这个消息类型对应的topic或exchange是否应该被创建并订阅到这个队列。
[ConfigureConsumeTopology(false)]
public record DeleteRecord{}
ExcludeFromTopology
ExcludeFromTopology 可选属性决定这个消息类型实例发布时这个消息的 topic 或 exchange 是否被创建。
如下例子中发布 ReformatHardDrive 命令不会在broker上创建 ICommand topic or exchange。
[ExcludeFromTopology]
public interface ICommand{}public record ReformatHardDrive : ICommand{}
不使用属性可以在配置时设置:
...UsingRabbitMq((context,cfg)
{cfg.PublishICommand(p p.Exclude true);
});