示例#1
0
文件: Service.cs 项目: ncdc/qpid
        static void Main(string[] args)
        {
            // Create binding for the service endpoint.
            AmqpBinding amqpBinding = new AmqpBinding();

            // Create ServiceHost.
            ServiceHost serviceHost = new ServiceHost(typeof(HelloService), new Uri[] { new Uri("http://localhost:8080/HelloService") });

            // Add behavior for our MEX endpoint.
            ServiceMetadataBehavior mexBehavior = new ServiceMetadataBehavior();
            mexBehavior.HttpGetEnabled = true;
            serviceHost.Description.Behaviors.Add(mexBehavior);

            // Add MEX endpoint.
            serviceHost.AddServiceEndpoint(typeof(IMetadataExchange), new BasicHttpBinding(), "MEX");

            // Add AMQP endpoint.
            Uri amqpUri = new Uri("amqp:message_queue");
            serviceHost.AddServiceEndpoint(typeof(IHelloService), amqpBinding, amqpUri.ToString());

            serviceHost.Open();

            Console.WriteLine();
            Console.WriteLine("The service is ready.");
            Console.WriteLine("Press <ENTER> to terminate service.");
            Console.WriteLine();
            Console.ReadLine();

            if (serviceHost.State != CommunicationState.Faulted)
            {
                serviceHost.Close();
            }
        }
示例#2
0
        protected override void OnApplyConfiguration(Binding binding)
        {
            if (binding == null)
            {
                throw new ArgumentNullException("binding");
            }

            if (!(binding is AmqpBinding))
            {
                throw new ArgumentException(string.Format("Invalid type for configuring an AMQP binding. Expected type: {0}. Type passed in: {1}.",
                                                          typeof(AmqpBinding).AssemblyQualifiedName,
                                                          binding.GetType().AssemblyQualifiedName));
            }

            AmqpBinding amqpBinding = (AmqpBinding)binding;

            amqpBinding.BrokerHost    = this.BrokerHost;
            amqpBinding.BrokerPort    = this.BrokerPort;
            amqpBinding.TransferMode  = this.TransferMode;
            amqpBinding.Shared        = this.Shared;
            amqpBinding.PrefetchLimit = this.PrefetchLimit;

            AmqpSecurityMode mode = AmqpSecurityMode.None;

            if (this.Security != null)
            {
                mode = this.Security.Mode;
            }

            if (mode == AmqpSecurityMode.None)
            {
                if (amqpBinding.SecurityEnabled)
                {
                    amqpBinding.Security.Mode = AmqpSecurityMode.None;
                }
            }
            else
            {
                amqpBinding.Security.Mode = AmqpSecurityMode.Transport;
                amqpBinding.Security.Transport.CredentialType = this.Security.Transport.CredentialType;
                amqpBinding.Security.Transport.IgnoreEndpointClientCredentials = this.Security.Transport.IgnoreEndpointCredentials;
                amqpBinding.Security.Transport.UseSSL = this.Security.Transport.UseSSL;
                if (this.Security.Transport.DefaultCredential != null)
                {
                    amqpBinding.Security.Transport.DefaultCredential = new AmqpCredential(
                        this.Security.Transport.DefaultCredential.UserName,
                        this.Security.Transport.DefaultCredential.Password);
                }
                else
                {
                    amqpBinding.Security.Transport.DefaultCredential = null;
                }
            }
        }
示例#3
0
        protected override void InitializeFrom(Binding binding)
        {
            base.InitializeFrom(binding);
            AmqpBinding amqpBinding = (AmqpBinding)binding;

            this.BrokerHost    = amqpBinding.BrokerHost;
            this.BrokerPort    = amqpBinding.BrokerPort;
            this.TransferMode  = amqpBinding.TransferMode;
            this.Shared        = amqpBinding.Shared;
            this.PrefetchLimit = amqpBinding.PrefetchLimit;

            if (!amqpBinding.SecurityEnabled)
            {
                this.Security = null;
            }
            else
            {
                if (this.Security == null)
                {
                    this.Security = new AmqpSecurityElement();
                }

                AmqpTransportSecurity sec = amqpBinding.Security.Transport;
                this.Security.Mode = AmqpSecurityMode.Transport;
                if (this.Security.Transport == null)
                {
                    this.Security.Transport = new AmqpTransportSecurityElement();
                }

                this.Security.Transport.CredentialType            = sec.CredentialType;
                this.Security.Transport.IgnoreEndpointCredentials = sec.IgnoreEndpointClientCredentials;
                this.Security.Transport.UseSSL = sec.UseSSL;
                if (sec.DefaultCredential == null)
                {
                    this.Security.Transport.DefaultCredential = null;
                }
                else
                {
                    this.Security.Transport.DefaultCredential          = new AmqpCredentialElement();
                    this.Security.Transport.DefaultCredential.UserName = sec.DefaultCredential.UserName;
                    this.Security.Transport.DefaultCredential.Password = sec.DefaultCredential.Password;
                }
            }

            AmqpProperties props = amqpBinding.DefaultMessageProperties;
        }
示例#4
0
文件: WcfPerftest.cs 项目: ncdc/qpid
        private static void InitializeBinding()
        {
            AmqpBinaryBinding binding = new AmqpBinaryBinding();
            bindingParameters = new BindingParameterCollection();

            binding.BrokerHost = brokerAddr;
            binding.BrokerPort = brokerPort;
            binding.TransferMode = TransferMode.Streamed;
            binding.PrefetchLimit = 5000;
            binding.Shared = true;

            if (ssl || (userName != null))
            {
                binding.Security.Mode = AmqpSecurityMode.Transport;
                binding.Security.Transport.UseSSL = ssl;

                if (userName != null)
                {
                    binding.Security.Transport.CredentialType = AmqpCredentialType.Plain;

                    ClientCredentials credentials = new ClientCredentials();
                    credentials.UserName.UserName = userName;
                    credentials.UserName.Password = password;
                    bindingParameters.Add(credentials);
                }
            }

            brokerBinding = binding;
        }