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

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

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

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

   e.LoadFrom(provider);

 });


指导将不胜感激。

最佳答案

虽然仍支持使用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);
 });


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

10-04 11:39