Masstransit Rx интеграция - PullRequest
       7

Masstransit Rx интеграция

0 голосов
/ 28 мая 2018

В документации Masstransit упоминается интеграция Rx, но я не смог найти никаких примеров ее использования.

У меня два вопроса - как его использовать и какие преимущества он дает?

1 Ответ

0 голосов
/ 28 мая 2018

Вам необходимо установить два nuget-пакета: Masstransit.Reactive и System.Reactive.Linq.

Добавьте значения:

using MassTransit.Reactive;
using System.Reactive.Linq;

Затем используйте:

IObservable<IMessage> messages = bus.AsObservable<IMessage>();

messages.Subscribe(
    onNext: msg => Console.WriteLine(msg.MessageId),
    onCompleted: () => Console.WriteLine("completed"),
    onError: ex => Console.WriteLine(ex.Message));

, где IMessage - это некоторый интерфейс, который ваши сообщения являются инструментами.

Однако при использовании этого я заметил следующие особенности:

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

Так что я не до конца понимаю, как этоможет применяться на практике.

...