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