Пример #1
0
        public override async Task StartAsync(CancellationToken cancellationToken)
        {
            var db = ConnectionMultiplexer.GetDatabase(_redisConfiguration.DatabaseId);
            await db.SetAddAsync(RedisQueueConventions.GetSubscriptionKey(AutoMessageMapper.GetQueueName <T>()), _subscription.Name).ConfigureAwait(false);

            await base.StartAsync(cancellationToken).ConfigureAwait(false);
        }
Пример #2
0
        public async Task PublishAsync <T>(T message) where T : IRedisEvent
        {
            var db            = _multiplexer.GetDatabase(_configuration.DatabaseId);
            var queueName     = AutoMessageMapper.GetQueueName <T>();
            var subscriptions = await db.SetMembersAsync(RedisQueueConventions.GetSubscriptionKey(queueName)).ConfigureAwait(false);

            if (subscriptions == null)
            {
                return;
            }
            await Task.WhenAll(subscriptions.Select(sub => SendAsync(message, RedisQueueConventions.GetSubscriptionQueueName(queueName, sub)))).ConfigureAwait(false);
        }