public async Task <TaskCompletionSource <Tour> > SubscribeAndGetAsync <TEvent>( Func <int, TaskCompletionSource <Tour>, Task> onMessageReceived, int id) where TEvent : IEvent { var taskCompletionSource = new TaskCompletionSource <Tour>(); var guid = Guid.NewGuid().ToString(); await _client.SubscribeAsync <TEvent>( async _ => await onMessageReceived(id, taskCompletionSource), ctx => ctx.UseSubscribeConfiguration(cfg => cfg.FromDeclaredQueue( builder => builder .WithDurability(false) .WithName(guid)))); return(taskCompletionSource); }
public async Task <TaskCompletionSource <TEvent> > SubscribeAndGetAsync <TEvent>( Func <TEvent, TaskCompletionSource <TEvent>, Task> onMessageReceived, string queueName) where TEvent : IEvent { var taskCompletionSource = new TaskCompletionSource <TEvent>(); var guid = Guid.NewGuid().ToString(); await _client.SubscribeAsync <TEvent>(async (@event) => await onMessageReceived(@event, taskCompletionSource) , ctx => ctx.UseSubscribeConfiguration(cfg => cfg.FromDeclaredQueue(q => q.WithName(GetQueueName <TEvent>(option.Namespace, queueName))))); return(taskCompletionSource); }