Example #1
0
        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
            });
        }
Example #2
0
        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();
            }
        }