Service У A настроен концентратор SignalR и принимает соединения, Сервис B подключен к нему с помощью класса HubConnection из пакета Microsoft.AspNetCore.SignalR.Client. И прослушивает некоторые сообщения от службы A с помощью:hubConnection.On('...')
Служба B также имеет концентратор signalR и принимает соединения от клиентов веб-сайта.
Служба A отправляет около 2000 сообщений в минуту в службу B, а >служба B также передает эти сообщения всем подключенным клиентам. к сервису B одновременно имеется около 80 клиентских подключений.
Проблема в том, что сообщения от сервиса A приходят очень поздно, их около 2 минут поздно. Я регистрирую строку, когда сообщение отправляется из службы A и получено в службе B, и разница составляет около 2 минут. У меня нет никаких идей, почему это происходит, 2 тысячи сообщений в минуту - это не так уж и много, как я считаю.
вот диаграмма:

Служба B выполняет следующую логику для каждого полученного сообщения:
Код: Выделить всё
hubConnection.On(method.Name, parameterTypes, @params =>
{
return Task.Run(() =>
{
var activity = new Activity("HubListener");
try
{
activity.Start();
activity.AddTag("TraceId", Guid.NewGuid().ToString());
activity.AddTag("ArrivalTime", DateTime.UtcNow);
var obj = _serviceProvider.GetRequiredService(method.DeclaringType)
method.Invoke(obj, @params);
}
catch (Exception e)
{
Log.Error(e, "Error In Hub Listener");
}
finally
{
activity.Stop();
}
});
});
Код: Выделить всё
public class BroadcastService {
private readonly IHubContext _baseHubContext;
public BroadcastService(IHubContext baseHubContext)
{
_baseHubContext = baseHubContext ?? BaseHub.CurrentContext;
}
public void BroadcastToClients(Message messageFromServiceA)
{
// it takes about 2 minutes for message to arrive at this place after it is sent from Service A.
// clients are separated in groups
foreach(var group in clientGroups){
_baseHubContext
.Clients
.Group(group.Name)
.SendAsync("onMessage",messageFromServiceA)
}
}
}
Буду признателен за любую помощь. Если потребуется дополнительная информация, я отредактирую вопрос.
Подробнее здесь: https://stackoverflow.com/questions/789 ... s-an-issue