コード例 #1
0
        public void Initialize(int port)
        {
            Port = port;

            MqServerOptions mqOptions = new MqServerOptions();

            mqOptions.AllowedQueues       = new[] { MessageA.ContentType, MessageB.ContentType, MessageC.ContentType };
            mqOptions.AllowMultipleQueues = true;
            mqOptions.AcknowledgeTimeout  = TimeSpan.FromSeconds(90);
            mqOptions.MessageTimeout      = TimeSpan.FromSeconds(12);

            Server = new MqServer(mqOptions);
            Server.SetDefaultChannelHandler(new TestChannelHandler(this), null);
            Server.SetDefaultDeliveryHandler(new TestDeliveryHandler(this));
            Server.ClientHandler      = new TestClientHandler(this);
            Server.AdminAuthorization = new TestAdminAuthorization();

            Channel channel = Server.CreateChannel("ch-1");

            channel.CreateQueue(MessageA.ContentType).Wait();
            channel.CreateQueue(MessageC.ContentType).Wait();

            Channel channel0 = Server.CreateChannel("ch-0");

            channel0.CreateQueue(MessageA.ContentType).Wait();

            Channel croute = Server.CreateChannel("ch-route");

            croute.Options.Status = QueueStatus.Route;
            croute.CreateQueue(MessageA.ContentType).Wait();

            Channel cpush = Server.CreateChannel("ch-push");

            cpush.Options.Status = QueueStatus.Push;
            cpush.CreateQueue(MessageA.ContentType).Wait();

            Channel cpull = Server.CreateChannel("ch-pull");

            cpull.Options.Status = QueueStatus.Pull;
            cpull.CreateQueue(MessageA.ContentType).Wait();

            Channel cround = Server.CreateChannel("ch-round");

            cround.Options.Status = QueueStatus.RoundRobin;
            cround.CreateQueue(MessageA.ContentType).Wait();
        }
コード例 #2
0
ファイル: ServerBuilder.cs プロジェクト: Akrotiri/twino
        /// <summary>
        /// Creates server from loaded and added options
        /// </summary>
        public MqServer CreateServer()
        {
            MqServerOptions options = new MqServerOptions();

            SetServerPropertyValues(_object, options);

            options.Instances = _object["Instances"] != null
                                    ? _object["Instances"].ToObject <InstanceOptions[]>()
                                    : new InstanceOptions[0];

            MqServer server = new MqServer(options, _clientAuthenticator, _clientAuthorization);

            if (_channelEventHandler != null)
            {
                server.SetDefaultChannelHandler(_channelEventHandler, _channelAuthenticator);
            }

            if (_messageDeliveryHandler != null)
            {
                server.SetDefaultDeliveryHandler(_messageDeliveryHandler);
            }

            if (_clientHandler != null)
            {
                server.ClientHandler = _clientHandler;
            }

            if (_serverMessageHandler != null)
            {
                server.ServerMessageHandler = _serverMessageHandler;
            }

            JObject channelToken = _object["Channels"] as JObject;

            if (channelToken == null)
            {
                return(server);
            }

            foreach (JProperty ctoken in channelToken.Properties())
            {
                ChannelOptions channelOptions;
                if (ctoken.HasValues)
                {
                    channelOptions = CloneFrom(options);
                    SetChannelPropertyValues(ctoken.Value, channelOptions);
                }
                else
                {
                    channelOptions = options;
                }

                Channel channel = server.CreateChannel(ctoken.Name, _channelAuthenticator, _channelEventHandler, _messageDeliveryHandler, channelOptions);

                JObject queueToken = ctoken.Value["Queues"] as JObject;
                if (queueToken == null)
                {
                    continue;
                }

                foreach (JProperty qtoken in queueToken.Properties())
                {
                    ushort contentType = Convert.ToUInt16(qtoken.Name);

                    ChannelQueueOptions queueOptions;
                    if (qtoken.HasValues)
                    {
                        queueOptions = CloneFromAsQueue(channelOptions);
                        SetQueuePropertyValues(qtoken.Value, queueOptions);
                    }
                    else
                    {
                        queueOptions = channelOptions;
                    }

                    channel.CreateQueue(contentType, queueOptions).Wait();
                }
            }

            return(server);
        }