使用依赖项注入时的消息分区程序?

时间:2018-05-25 12:04:04

标签: c# masstransit

如何在通过依赖注入(autofac)注册使用者时设置消息分区,如此

 cfg.ReceiveEndpoint(host, c =>
                    {
                        c.LoadFrom(context);
                        c.Durable = true;
                    });

所有消息都具有相同的标记接口

 IDomainEvent<Guid>

我希望所有消息都按该接口的Id属性进行分区。

我想尝试这样的事情:

 c.Consumer<SomeViewConsumer>(context,ConfigurePartition<SomeViewConsumer>(partitioner));
 c.Consumer<SomeOtherViewConsumer>(context,ConfigurePartition<SomeOtherViewConsumer>(partitioner));


  private static Action<IConsumerConfigurator<TConsumer>> ConfigurePartition<TConsumer>(IPartitioner partitioner) where TConsumer : class
  {
        return n => n.Message<IDomainEvent<Guid>>(k => k.UsePartitioner(partitioner, consumeContext => consumeContext.Message.Id));
  }

这会有用吗?

1 个答案:

答案 0 :(得分:0)

没有自动方法,因为必须知道消息类型才能配置返回分区键的分区代理。

我还担心在一个接收端点上消耗太多不同的消息类型,方法是使用.LoadFrom()从容器中自动提取它们。