MassTransit: публикация события создала дополнительный topi c, названный полностью интерфейсом пространства имен - PullRequest
0 голосов
/ 26 февраля 2020

У меня есть следующие события

    public class MyEvent:BaseEvent
   {
   }

   public interface BaseEvent
   {
   }

, когда я публикую sh, используя masstransit, как показано ниже:

var busControl = Bus.Factory.CreateUsingAzureServiceBus(
            cfg =>
            {
                cfg.Host(
                    new Uri(serviceBusUri),
                    h =>
                    {
                        h.OperationTimeout = TimeSpan.FromSeconds(5);
                        h.TokenProvider = TokenProvider.CreateSharedAccessSignatureTokenProvider(sharedAccessKeyName, sharedAccessKey, tokenTimeToLive, TokenScope.Namespace);
                    });
                cfg.UseRetry(r => r.None());
            });
var message= new MyEvent();
await this._busControl.Publish(message, typeof(MyEvent));

Он создал одну дополнительную топи c с именем BaseEvent. Это ожидается?

1 Ответ

2 голосов
/ 26 февраля 2020

MassTransit создаст темы, соответствующие иерархии классов / интерфейсов, для поддержки полиморфной c маршрутизации сообщений в очереди. Опубликованные сообщения, являющиеся производными типами, будут автоматически пересылать сообщения темам более высокого уровня. Очереди конечной точки получения затем привязываются к соответствующим темам через подписки, которые будут перенаправлять сообщения в очередь.

Это похоже на то, как работает RabbitMQ , с той разницей, что Azure использует подписки для жду других тем / очередей.

...