依存性注入(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));
}
これは機能しますか?
パーティションキーを返すパーティショナーデリゲートを構成するには、メッセージタイプを知っている必要があるため、これを自動的に行う方法はありません。
また、を使用してコンテナから自動的にプルすることにより、単一の受信エンドポイントで非常に多くの異なるメッセージタイプを消費することも心配.LoadFrom()
です。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加