Exemplo n.º 1
0
 public async Task ExecuteAsync(CancellationToken cancellationToken = default)
 {
     foreach (var messageType in _messageTypes)
     {
         var queueName = messageType.Name;
         var bus       = _serviceBusFactory.ConfigureServiceBus(new[] { messageType }, queueName);
         await bus.Subscribe(messageType);
     }
 }
Exemplo n.º 2
0
        public async Task ExecuteAsync(CancellationToken cancellationToken)
        {
            await using var handle = await _distributedLockProvider.AcquireLockAsync(nameof (CreateSubscriptions), _elsaOptions.DistributedLockTimeout, cancellationToken);

            if (handle == null)
            {
                throw new Exception("Could not acquire a lock within the maximum amount of time configured");
            }

            var competingMessageTypeGroups = _competingMessageTypes.GroupBy(x => x.QueueName);

            foreach (var messageTypeGroup in competingMessageTypeGroups)
            {
                var queueName    = messageTypeGroup.Key;
                var messageTypes = messageTypeGroup.Select(x => x.MessageType).ToList();
                var bus          = _serviceBusFactory.ConfigureServiceBus(messageTypes, queueName);

                foreach (var messageType in messageTypes)
                {
                    await bus.Subscribe(messageType);
                }
            }

            var containerName           = _containerNameAccessor.GetContainerName();
            var pubSubMessageTypeGroups = _pubSubMessageTypes.GroupBy(x => x.QueueName);

            foreach (var messageTypeGroup in pubSubMessageTypeGroups)
            {
                var queueName    = $"{containerName}:{messageTypeGroup.Key}";
                var messageTypes = messageTypeGroup.Select(x => x.MessageType).ToList();
                var bus          = _serviceBusFactory.ConfigureServiceBus(messageTypes, queueName);

                foreach (var messageType in messageTypes)
                {
                    await bus.Subscribe(messageType);
                }
            }
        }