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); } }
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); } } }