public async Task PublishAsync <TMessage>(TMessage message) { var sw = Stopwatch.StartNew(); var topic = _topicNameProvider.Get <TMessage>(); var subscribers = await _subscriptionAgent.GetSubscribersAsync(topic); if (subscribers != null) { foreach (var subscriber in subscribers) { var payload = JsonConvert.SerializeObject(message); await _publishingAgent.PublishToSubscriberAsync(subscriber.Name, topic, payload); } await Task.Delay(10); } else { _messagingLogger.Debug($"no subsriptions for {topic}"); } _messagingLogger.Debug($"{topic} sent in {sw.ElapsedMilliseconds}"); }
public async Task PublishAsync(string topic, object message) { var sw = Stopwatch.StartNew(); var subscribers = await _subscriptionAgent.GetSubscribersAsync(topic); var payload = JsonConvert.SerializeObject(message); if (subscribers != null && subscribers.Any()) { foreach (var subscriber in subscribers) { await _publishingAgent.PublishToSubscriberAsync(subscriber.Name, topic, payload); } } else { _messagingLogger.Debug($"no subsriptions for {topic}"); await _deadLettersAgent.PublishAsync(topic, payload); } _messagingLogger.Debug($"{topic} sent in {sw.ElapsedMilliseconds}"); }