A windows communication foundation binding over AMQP
Inheritance: System.ServiceModel.Channels.Binding
        protected override void OnApplyConfiguration(Binding binding)
        {
            if (binding == null)
            {
                throw new ArgumentNullException("binding");
            }

            RabbitMQBinding rabbind = binding as RabbitMQBinding;

            if (rabbind == null)
            {
                throw new ArgumentException(
                          string.Format("Invalid type for binding. Expected {0}, Passed: {1}",
                                        typeof(RabbitMQBinding).AssemblyQualifiedName,
                                        binding.GetType().AssemblyQualifiedName));
            }

            rabbind.HostName                         = this.HostName;
            rabbind.Port                             = this.Port;
            rabbind.BrokerProtocol                   = this.Protocol;
            rabbind.OneWayOnly                       = this.OneWayOnly;
            rabbind.TransactionFlow                  = this.TransactionFlowEnabled;
            rabbind.Transport.Password               = this.Password;
            rabbind.Transport.Username               = this.Username;
            rabbind.Transport.VirtualHost            = this.VirtualHost;
            rabbind.Transport.MaxReceivedMessageSize = this.MaxMessageSize;
        }
Ejemplo n.º 2
0
        public void TwoWay()
        {
            var host = new ServiceHost(typeof(Calculator), new Uri("soap.amqp:///"));

            var binding = new RabbitMQBinding(Constants.HostName, Constants.MainPort);

            host.AddServiceEndpoint(typeof(ICalculator), binding, "Calculator");

            host.Open();

            var client = ChannelFactory<ICalculator>.CreateChannel(binding, new EndpointAddress("soap.amqp:///Calculator"));

            Assert.AreEqual(3, client.Add(1, 2));

            host.Close();
        }
        protected override void InitializeFrom(Binding binding)
        {
            base.InitializeFrom(binding);
            RabbitMQBinding rabbind = binding as RabbitMQBinding;

            if (rabbind != null)
            {
                this.HostName               = rabbind.HostName;
                this.Port                   = rabbind.Port;
                this.MaxMessageSize         = rabbind.MaxMessageSize;
                this.OneWayOnly             = rabbind.OneWayOnly;
                this.TransactionFlowEnabled = rabbind.TransactionFlow;
                this.VirtualHost            = rabbind.Transport.ConnectionFactory.VirtualHost;
                this.Username               = rabbind.Transport.ConnectionFactory.UserName;
                this.Password               = rabbind.Transport.ConnectionFactory.Password;
            }
        }
Ejemplo n.º 4
0
        public void OneWay()
        {
            var host = new ServiceHost(typeof(Logger), new Uri("soap.amqp:///"));

            var binding = new RabbitMQBinding(Constants.HostName, Constants.MainPort){OneWayOnly = true};

            host.AddServiceEndpoint(typeof(ILogger), binding, "Log");

            host.Open();

            var client = ChannelFactory<ILogger>.CreateChannel(binding, new EndpointAddress("soap.amqp:///Log"));

            client.Log("ciao");

            Logger.Semaphore.WaitOne(500);

            Assert.AreEqual("ciao", Logger.LastLogged);

            host.Close();
        }
Ejemplo n.º 5
0
        public void Duplex()
        {
            var host = new ServiceHost(typeof(OrderService), new Uri("soap.amqp:///"));

            var binding = new RabbitMQBinding(Constants.HostName, Constants.MainPort);

            host.AddServiceEndpoint(typeof(IOrderService), binding, "OrderService");

            host.Open();

            var callback = new OrderCallback();
            var client = DuplexChannelFactory<IOrderService>.CreateChannel(callback,
                                                                           binding,
                                                                           new EndpointAddress("soap.amqp:///OrderService"));

            client.Order();

            callback.Semaphore.WaitOne(500);
            Assert.IsTrue(callback.Completed);

            host.Close();
        }