разделитель сообщений при использовании внедрения зависимостей? - PullRequest
0 голосов
/ 25 мая 2018

Как настроить разбиение сообщений при регистрации потребителя с помощью внедрения зависимостей (автофак), например

 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 голосов
/ 25 мая 2018

Не существует автоматического способа сделать это, так как тип сообщения должен быть известен для настройки делегата разделителя, который возвращает ключ раздела.

Я также был бы обеспокоен потреблением слишком большого количества различных сообщенийвводит данные на одной конечной точке получения, автоматически извлекая их из контейнера с помощью .LoadFrom().

...