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

            IMessageSerializer serializer = new XmlMessageSerializer();

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

            IDuplexTransport transport = _factory.BuildLoopback(new TransportSettings(_exchange));
            var sendEndpoint           = new Endpoint(_exchange, serializer, transport, null);

            sendEndpoint.Send(message);


            var receiveEndpoint = new Endpoint(_queue, serializer, transport, null);

            receiveEndpoint.Receive(o =>
            {
                return(b =>
                {
                    var bb = (BugsBunny)b;
                    Console.WriteLine(bb.Food);
                });
            }, TimeSpan.Zero);
        }
Exemplo n.º 2
0
        public Endpoint([NotNull] IEndpointAddress address,
                        [NotNull] IMessageSerializer serializer,
                        [NotNull] IDuplexTransport transport,
                        [NotNull] IOutboundTransport errorTransport,
                        [NotNull] IInboundMessageTracker messageTracker)
        {
            if (address == null)
            {
                throw new ArgumentNullException("address");
            }
            if (serializer == null)
            {
                throw new ArgumentNullException("serializer");
            }
            if (transport == null)
            {
                throw new ArgumentNullException("transport");
            }
            if (errorTransport == null)
            {
                throw new ArgumentNullException("errorTransport");
            }
            if (messageTracker == null)
            {
                throw new ArgumentNullException("messageTracker");
            }

            _address        = address;
            _errorTransport = errorTransport;
            _serializer     = serializer;
            _tracker        = messageTracker;
            _transport      = transport;

            _disposedMessage = string.Format("The endpoint has already been disposed: {0}", _address);
        }
Exemplo n.º 3
0
        public bool Execute()
        {
            Uri uri = _uriString.ToUri("The URI was invalid");

            IDuplexTransport transport = Program.Transports.GetTransport(uri);

            ITextBlock text = new TextBlock()
                              .BeginBlock("Requeue messages to " + uri, "");


            int requeueCount = 0;

            for (int i = 0; i < _count; i++)
            {
                transport.Receive(receiveContext =>
                {
                    return(context =>
                    {
                        var moveContext = new MoveMessageSendContext(context);

                        transport.Send(moveContext);

                        text.BodyFormat("Message-Id: {0}", context.MessageId);

                        requeueCount++;
                    });
                }, TimeSpan.Zero);
            }

            _log.Info(text);
            _log.InfoFormat("{0} message{1} requeued to {2}", requeueCount, requeueCount == 1 ? "" : "s", uri);

            return(true);
        }
Exemplo n.º 4
0
        public Endpoint([NotNull] IEndpointAddress address,
                        [NotNull] IMessageSerializer serializer,
                        [NotNull] IDuplexTransport transport,
                        [NotNull] IOutboundTransport errorTransport)
        {
            if (address == null)
            {
                throw new ArgumentNullException("address");
            }
            if (serializer == null)
            {
                throw new ArgumentNullException("serializer");
            }
            if (transport == null)
            {
                throw new ArgumentNullException("transport");
            }
            if (errorTransport == null)
            {
                throw new ArgumentNullException("errorTransport");
            }
            _address        = address;
            _transport      = transport;
            _errorTransport = errorTransport;
            _serializer     = serializer;

            _tracker = new MessageRetryTracker(5);

            SetDisposedMessage();
        }
Exemplo n.º 5
0
        public Endpoint(IEndpointAddress address, IMessageSerializer serializer, IDuplexTransport transport,
                        IOutboundTransport errorTransport)
        {
            _address        = address;
            _transport      = transport;
            _errorTransport = errorTransport;
            _serializer     = serializer;

            _tracker = new MessageRetryTracker(5);

            SetDisposedMessage();
        }
Exemplo n.º 6
0
        public IEndpoint CreateEndpoint(ITransportFactory transportFactory)
        {
            try
            {
                IDuplexTransport   transport      = _transportFactory(transportFactory, _settings);
                IOutboundTransport errorTransport = _errorTransportFactory(transportFactory, _errorSettings);

                var endpoint = new Endpoint(transport.Address, _settings.Serializer, transport, errorTransport);

                return(endpoint);
            }
            catch (Exception ex)
            {
                throw new EndpointException(_uri, "Failed to create endpoint", ex);
            }
        }
Exemplo n.º 7
0
        void Dispose(bool disposing)
        {
            if (_disposed)
            {
                return;
            }
            if (disposing)
            {
                _transport.Dispose();
                _transport = null;

                _errorTransport.Dispose();
                _errorTransport = null;
            }

            _disposed = true;
        }
        public void CanConnect()
        {
            IDuplexTransport t = _factory.BuildLoopback(new TransportSettings(_queue));

            _factory.ConnectionCount().ShouldEqual(1);
        }