public static async Task SendMessageToSubscriptions <T>(this FutureConsumeContext context, IEnumerable <FutureSubscription> subscriptions, T message) where T : class { List <Task> tasks = subscriptions.Select(async sub => { var endpoint = await context.GetSendEndpoint(sub.Address).ConfigureAwait(false); if (sub.RequestId.HasValue) { var pipe = new FutureResponsePipe <T>(sub.RequestId.Value); await endpoint.Send(message, pipe, context.CancellationToken).ConfigureAwait(false); } else { await endpoint.Send(message, context.CancellationToken).ConfigureAwait(false); } }).ToList(); await Task.WhenAll(tasks).ConfigureAwait(false); }
public static async Task SendMessageToSubscriptions <T>(this FutureConsumeContext context, IEnumerable <FutureSubscription> subscriptions, IMessageInitializer <T> initializer, InitializeContext <T> initializeContext, object values) where T : class { List <Task> tasks = subscriptions.Select(async sub => { var endpoint = await context.GetSendEndpoint(sub.Address).ConfigureAwait(false); if (sub.RequestId.HasValue) { var pipe = new FutureResponsePipe <T>(sub.RequestId.Value); await initializer.Send(endpoint, initializeContext, values, pipe).ConfigureAwait(false); } else { await initializer.Send(endpoint, initializeContext, values).ConfigureAwait(false); } }).ToList(); await Task.WhenAll(tasks).ConfigureAwait(false); }