public void TransportSendAndReceive()
        {
            using (var management = new RabbitMqEndpointManagement(_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());
        }
        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);
        }
        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));
            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);
        }
Ejemplo n.º 4
0
        public void Bind(RabbitMqConnection connection)
        {
            _channel = connection.Connection.CreateModel();

            _channel.ExchangeDeclare(_address.Name, ExchangeType.Fanout, true);

            if (_bindToQueue)
            {
                using (var management = new RabbitMqEndpointManagement(_address, connection.Connection))
                {
                    management.BindQueue(_address.Name, _address.Name, ExchangeType.Fanout, "");
                }
            }
        }
        public void OnSubscriptionRemoved(SubscriptionRemoved message)
        {
            Guard.AgainstNull(_inputAddress, "InputAddress", "The input address was not set");

            MessageName messageName;
            if (_bindings.TryGetValue(message.SubscriptionId, out messageName))
            {
                using (var management = new RabbitMqEndpointManagement(_inputAddress))
                {
                    management.UnbindExchange(_inputAddress.Name, messageName.ToString(), "");
                }

                _bindings.Remove(message.SubscriptionId);
            }
        }
Ejemplo n.º 6
0
        public void Bind(RabbitMqConnection connection)
        {
            using (var management = new RabbitMqEndpointManagement(_address, connection.Connection))
            {
                management.BindQueue(_address.Name, _address.Name, ExchangeType.Fanout, "", _address.QueueArguments());

                if (_purgeOnBind)
                {
                    management.Purge(_address.Name);
                    _purgeOnBind = false;
                }
            }

            _channel = connection.Connection.CreateModel();
            _channel.BasicQos(0, 1, false);
        }
Ejemplo n.º 7
0
        public void OnSubscriptionRemoved(SubscriptionRemoved message)
        {
            Guard.AgainstNull(_inputAddress, "InputAddress", "The input address was not set");

            MessageName messageName;

            if (_bindings.TryGetValue(message.SubscriptionId, out messageName))
            {
                using (var management = new RabbitMqEndpointManagement(_inputAddress))
                {
                    management.UnbindExchange(_inputAddress.Name, messageName.ToString(), "");
                }

                _bindings.Remove(message.SubscriptionId);
            }
        }
Ejemplo n.º 8
0
        void AddEndpointForType(Type messageType)
        {
            using (var management = new RabbitMqEndpointManagement(_address))
            {
                IEnumerable <Type> types = management.BindExchangesForPublisher(messageType, _messageNameFormatter);
                foreach (Type type in types)
                {
                    if (_added.ContainsKey(type))
                    {
                        continue;
                    }

                    MessageName messageName = _messageNameFormatter.GetMessageName(type);

                    IRabbitMqEndpointAddress messageEndpointAddress = _address.ForQueue(messageName.ToString());

                    FindOrAddEndpoint(type, messageEndpointAddress);
                }
            }
        }
        public void OnSubscriptionAdded(SubscriptionAdded message)
        {
            Guard.AgainstNull(_inputAddress, "InputAddress", "The input address was not set");

            Type messageType = Type.GetType(message.MessageName);
            if (messageType == null)
            {
                _log.InfoFormat("Unknown message type '{0}', unable to add subscription", message.MessageName);
                return;
            }

            MessageName messageName = _messageNameFormatter.GetMessageName(messageType);

            using (var management = new RabbitMqEndpointManagement(_inputAddress))
            {
                management.BindExchange(_inputAddress.Name, messageName.ToString(), ExchangeType.Fanout, "");
            }

            _bindings[message.SubscriptionId] = messageName;
        }
Ejemplo n.º 10
0
        public void OnSubscriptionAdded(SubscriptionAdded message)
        {
            Guard.AgainstNull(_inputAddress, "InputAddress", "The input address was not set");

            Type messageType = Type.GetType(message.MessageName);

            if (messageType == null)
            {
                _log.InfoFormat("Unknown message type '{0}', unable to add subscription", message.MessageName);
                return;
            }

            MessageName messageName = _messageNameFormatter.GetMessageName(messageType);

            using (var management = new RabbitMqEndpointManagement(_inputAddress))
            {
                management.BindExchange(_inputAddress.Name, messageName.ToString(), ExchangeType.Fanout, "");
            }

            _bindings[message.SubscriptionId] = messageName;
        }
        public void TransportSendAndReceive()
        {
            using (var management = new RabbitMqEndpointManagement(_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());
        }
Ejemplo n.º 12
0
		void DeclareBindings()
		{
			if (_declared)
				return;

			using (var management = new RabbitMqEndpointManagement(_address, _connection))
			{
				management.BindQueue(_address.Name, _address.Name, ExchangeType.Fanout, "");
			}

			_declared = true;
		}
Ejemplo n.º 13
0
		static void BindErrorExchangeToQueue(IRabbitMqEndpointAddress address, IConnection connection)
		{
			// we need to go ahead and bind a durable queue for the error transport, since
			// there is probably not a listener for it.

			using (var management = new RabbitMqEndpointManagement(address, connection))
			{
				management.BindQueue(address.Name, address.Name, ExchangeType.Fanout, "");
			}
		}
		static void PurgeExistingMessages(ConnectionHandler<RabbitMqConnection> connectionHandler,
		                                  IRabbitMqEndpointAddress address)
		{
			connectionHandler.Use(connection =>
				{
					using (var management = new RabbitMqEndpointManagement(address, connection.Connection))
					{
						management.Purge(address.Name);
					}
				});
		}