public When_a_responder_is_cancelled() { mockBuilder = new MockBuilder(); conventions = mockBuilder.Bus.Advanced.Conventions; typeNameSerializer = mockBuilder.Bus.Advanced.Container.Resolve <ITypeNameSerializer>(); serializer = mockBuilder.Bus.Advanced.Container.Resolve <ISerializer>(); mockBuilder.Bus.RespondAsync <RpcRequest, RpcResponse>(m => { var taskSource = new TaskCompletionSource <RpcResponse>(); taskSource.SetCanceled(); return(taskSource.Task); }); mockBuilder.EventBus.Subscribe <PublishedMessageEvent>(x => publishedMessage = x); mockBuilder.EventBus.Subscribe <AckEvent>(x => ackEvent = x); DeliverMessage(new RpcRequest { Value = 42 }); }
private void DeliverMessage(RpcRequest request) { var properties = new BasicProperties { Type = typeNameSerializer.Serialize(typeof(RpcRequest)), CorrelationId = "the_correlation_id", ReplyTo = conventions.RpcReturnQueueNamingConvention(typeof(RpcResponse)) }; var body = serializer.MessageToBytes(typeof(RpcRequest), request); var waiter = new CountdownEvent(2); mockBuilder.EventBus.Subscribe <PublishedMessageEvent>(x => { publishedMessage = x; waiter.Signal(); }); mockBuilder.EventBus.Subscribe <AckEvent>(x => { ackEvent = x; waiter.Signal(); }); mockBuilder.Consumers[0].HandleBasicDeliver( "consumer tag", 0, false, "the_exchange", "the_routing_key", properties, body ); if (!waiter.Wait(5000)) { throw new TimeoutException(); } }