public void EndpointSendAndReceive()
        {
            using (var management = new RabbitEndpointManagement(_queue))
            {
                management.BindQueue(_queue.Name, _exchange.Name, ExchangeType.Fanout, "", null);
            }

            IMessageSerializer serializer = new JsonMessageSerializer();

            var message = new BugsBunny {
                Food = "Carrot"
            };

            IDuplexTransport   transport = _factory.BuildLoopback(new TransportSettings(_exchange));
            IOutboundTransport error     = _factory.BuildError(new TransportSettings(_error));

            var sendEndpoint = new Endpoint(_exchange, serializer, transport, error,
                                            new InMemoryInboundMessageTracker(5));

            sendEndpoint.Send(message);


            var receiveEndpoint = new Endpoint(_queue, serializer, transport, error,
                                               new InMemoryInboundMessageTracker(5));

            receiveEndpoint.Receive(o =>
            {
                return(b =>
                {
                    var bb = (BugsBunny)b;
                    Console.WriteLine(bb.Food);
                });
            }, TimeSpan.Zero);
        }
        public void TransportSendAndReceive()
        {
            using (var management = new RabbitEndpointManagement(_queue))
            {
                management.BindQueue(_queue.Name, _exchange.Name, ExchangeType.Fanout, "", null);
            }

            IOutboundTransport t = _factory.BuildOutbound(new TransportSettings(_exchange));
            var context          = new SendContext <string>("dru");

            context.SetBodyWriter(stream =>
            {
                byte[] buffer = Encoding.UTF8.GetBytes(context.Message);
                stream.Write(buffer, 0, buffer.Length);
            });
            t.Send(context);

            IInboundTransport i = _factory.BuildInbound(new TransportSettings(_queue));

            i.Receive(s =>
            {
                return(ss =>
                {
                    string name;
                    using (var stream = new MemoryStream())
                    {
                        ss.CopyBodyTo(stream);

                        name = Encoding.UTF8.GetString(stream.ToArray());
                    }

                    Assert.AreEqual("dru", name);
                    Console.WriteLine(name);
                });
            }, 1.Minutes());
        }