Beispiel #1
0
        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}");
        }
Beispiel #2
0
        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}");
        }