如何在通过依赖注入(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));
}
这会有用吗?
答案 0 :(得分:0)
没有自动方法,因为必须知道消息类型才能配置返回分区键的分区代理。
我还担心在一个接收端点上消耗太多不同的消息类型,方法是使用.LoadFrom()
从容器中自动提取它们。