我升级到MassTransit 5.2.0,现有代码抱怨LoadFrom现在已过时。

时间:2019-01-08 22:28:36

标签: configuration endpoint masstransit

该警告确实建议阅读文档,但当前文档建议在配置需要DI支持的使用者时使用LoadFrom。当前使用.net核心依赖注入。找不到允许DI的Consumer方法。

这继续起作用。只是让我感到紧张。

cfg.ReceiveEndpoint(host, "adjudication-api", e => 
{
   e.PrefetchCount = 16;

   e.UseMessageRetry(x => x.Interval(2, 100));

   e.LoadFrom(provider);

 });

指导将不胜感激。

1 个答案:

答案 0 :(得分:2)

尽管仍支持使用LoadFrom,但不鼓励使用它,因为它实际上会促进一种非常不好的做法,将您的所有蛋都放在一个篮子里。我经常遇到在单个队列中有数十个消费者的开发人员,而这些消费者都不相关。重要的是,将消费者分布在多个队列中,以避免瓶颈,代理上的流量分开并更好地了解系统。

代替使用LoadFrom,请考虑以下方法:

cfg.ReceiveEndpoint(host, "adjudication-api", e => 
{
   e.PrefetchCount = 16;

   e.UseMessageRetry(x => x.Interval(2, 100));

   e.Consumer<AdjudicationConsumer>(provider);
 });

然后,如果您有另一个负责报销的消费者,请为其创建一个单独的端点:

cfg.ReceiveEndpoint(host, "reimbursement-api", e => 
{
   e.PrefetchCount = 16;

   e.UseMessageRetry(x => x.Interval(2, 100));

   e.Consumer<ReimbursementConsumer>(provider);
 });

使用这种方法,使用者分散在多个队列(接收端点)中。