Я пытаюсь настроить поддержку объединительной платы MassTransit SignalR прямо сейчас. Я пытаюсь следовать этому руководству: https://masstransit-project.com/advanced/signalr/quickstart.html
Вот моя конфигурация MassTransit в моем Startup.cs (это вызывается из вызова ConfigureServices
):
private void ConfigureMassTransit([NotNull] IServiceCollection services)
{
services.AddSignalR().AddMassTransitBackplane();
// creating the bus config
services.AddMassTransit(x =>
{
// Add this for each Hub you have
x.AddSignalRHubConsumers<ChatHub>();
x.AddSignalRHubConsumers<NotificationHub>();
x.AddBus(provider =>
{
var dnsResolutionService = provider.GetService<IDnsResolutionService>();
var logger = provider.GetService<IMainLogger>();
return MassTransitBusFactory.CreateBus(dnsResolutionService, logger, cfg =>
{
cfg.AddSignalRHubEndpoints<ChatHub>(provider);
cfg.AddSignalRHubEndpoints<NotificationHub>(provider);
});
});
});
}
Сейчас я пытаюсь сделать это с помощью следующего концентратора:
public class NotificationHub : BaseHub, INotificationHub
{
public NotificationHub([NotNull] ISessionService sessionService)
: base(sessionService)
{
}
public async Task Test(string message)
{
await Clients.All.SendAsync("NewNotification", "bla");
}
}
А вот мой код вызова:
public Task RaiseSignalREvent()
{
var protocols = new IHubProtocol[] { new JsonHubProtocol() };
return _eventBus.Publish<All<NotificationHub>>(new
{
Messages = protocols.ToProtocolDictionary("Test", new object []{"blub"}),
});
}
Код, очевидно, предназначен только для тестирования. по состоянию на сейчас. Когда я запускаю это и вызываю RaiseSignalREvent
, я ожидал, что метод NotificationHub будет запущен, однако сейчас ничего не происходит.
Вот некоторые соображения, о которых я подумал, что может быть проблемой:
Возможно, я неправильно понимаю, как собирается параметр "Messages" в publi sh.
Конфигурация неверна. Я публикую это из службы, в которой не отображается весь код запуска.
Я не уверен в том, как работает MassTransit, но на данный момент у меня есть два Автобусы в сервисе, в котором подробно находится Startup.cs. Есть шина, идущая от метода ConfigureMassTransit, и еще одна, созданная в сервисе, который я подключил к DI, который я обычно использую для работы с MassTransit. По сути, в этом сервисе есть 2 автобуса. Имеет ли это значение?
Может ли кто-нибудь помочь мне решить проблему, с которой я столкнулся?