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; }
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; } }
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(); }
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(); }