static void InitializeEQueue() { ECommonConfiguration .Create() .UseAutofac() .RegisterCommonComponents() .UseLog4Net() .UseJsonNet() .RegisterUnhandledExceptionHandler() .RegisterEQueueComponents(); _logger = ObjectContainer.Resolve<ILoggerFactory>().Create("Program"); var clientCount = int.Parse(ConfigurationManager.AppSettings["ClientCount"]); var consumerSetting = new ConsumerSetting { HeartbeatBrokerInterval = 1000, UpdateTopicQueueCountInterval = 1000, RebalanceInterval = 1000, ConsumeFromWhere = ConsumeFromWhere.FirstOffset }; var messageHandler = new MessageHandler(); for (var i = 1; i <= clientCount; i++) { new Consumer("Consumer@" + i.ToString(), "SampleGroup", consumerSetting) .Subscribe("SampleTopic") .SetMessageHandler(messageHandler) .Start(); } }
static void Main(string[] args) { InitializeEQueue(); var messageHandler = new MessageHandler(); var consumerSetting = new ConsumerSetting { HeartbeatBrokerInterval = 1000, UpdateTopicQueueCountInterval = 1000, RebalanceInterval = 1000 }; var consumer1 = new Consumer("Consumer1", "group1", consumerSetting).Subscribe("SampleTopic").Start(messageHandler); var consumer2 = new Consumer("Consumer2", "group1", consumerSetting).Subscribe("SampleTopic").Start(messageHandler); _logger.Info("Start consumer load balance, please wait for a moment."); var scheduleService = ObjectContainer.Resolve<IScheduleService>(); var waitHandle = new ManualResetEvent(false); var taskId = scheduleService.ScheduleTask(() => { var c1AllocatedQueueIds = consumer1.GetCurrentQueues().Select(x => x.QueueId); var c2AllocatedQueueIds = consumer2.GetCurrentQueues().Select(x => x.QueueId); if (c1AllocatedQueueIds.Count() == 2 && c2AllocatedQueueIds.Count() == 2) { _logger.Info(string.Format("Consumer load balance finished. Queue allocation result: c1:{0}, c2:{1}", string.Join(",", c1AllocatedQueueIds), string.Join(",", c2AllocatedQueueIds))); waitHandle.Set(); } }, 1000, 1000); waitHandle.WaitOne(); scheduleService.ShutdownTask(taskId); Console.ReadLine(); }
static void InitializeEQueue() { ECommonConfiguration .Create() .UseAutofac() .RegisterCommonComponents() .UseLog4Net() .UseJsonNet() .RegisterUnhandledExceptionHandler() .RegisterEQueueComponents(); var clusterName = ConfigurationManager.AppSettings["ClusterName"]; var consumerName = ConfigurationManager.AppSettings["ConsumerName"]; var consumerGroup = ConfigurationManager.AppSettings["ConsumerGroup"]; var address = ConfigurationManager.AppSettings["NameServerAddress"]; var topic = ConfigurationManager.AppSettings["Topic"]; var nameServerAddress = string.IsNullOrEmpty(address) ? SocketUtils.GetLocalIPV4() : IPAddress.Parse(address); var clientCount = int.Parse(ConfigurationManager.AppSettings["ClientCount"]); var setting = new ConsumerSetting { ClusterName = clusterName, ConsumeFromWhere = ConsumeFromWhere.FirstOffset, MessageHandleMode = MessageHandleMode.Sequential, NameServerList = new List<IPEndPoint> { new IPEndPoint(nameServerAddress, 9493) } }; var messageHandler = new MessageHandler(); for (var i = 1; i <= clientCount; i++) { new Consumer(consumerGroup, setting, consumerName) .Subscribe(topic) .SetMessageHandler(messageHandler) .Start(); } }
static void Main(string[] args) { InitializeEQueue(); var messageHandler = new MessageHandler(); var consumer1 = new Consumer("Consumer1", "group1").Subscribe("SampleTopic").Start(messageHandler); var consumer2 = new Consumer("Consumer2", "group1").Subscribe("SampleTopic").Start(messageHandler); var consumer3 = new Consumer("Consumer3", "group1").Subscribe("SampleTopic").Start(messageHandler); var consumer4 = new Consumer("Consumer4", "group1").Subscribe("SampleTopic").Start(messageHandler); Console.WriteLine("Start consumer load balance, please wait for a moment."); var scheduleService = ObjectContainer.Resolve<IScheduleService>(); var waitHandle = new ManualResetEvent(false); var taskId = scheduleService.ScheduleTask(() => { var c1AllocatedQueueIds = consumer1.GetCurrentQueues().Select(x => x.QueueId); var c2AllocatedQueueIds = consumer2.GetCurrentQueues().Select(x => x.QueueId); var c3AllocatedQueueIds = consumer3.GetCurrentQueues().Select(x => x.QueueId); var c4AllocatedQueueIds = consumer4.GetCurrentQueues().Select(x => x.QueueId); if (c1AllocatedQueueIds.Count() == 1 && c2AllocatedQueueIds.Count() == 1 && c3AllocatedQueueIds.Count() == 1 && c4AllocatedQueueIds.Count() == 1) { Console.WriteLine(string.Format("Consumer load balance finished. Queue allocation result: c1:{0}, c2:{1}, c3:{2}, c4:{3}", string.Join(",", c1AllocatedQueueIds), string.Join(",", c2AllocatedQueueIds), string.Join(",", c3AllocatedQueueIds), string.Join(",", c4AllocatedQueueIds))); waitHandle.Set(); } }, 1000, 1000); waitHandle.WaitOne(); scheduleService.ShutdownTask(taskId); Console.ReadLine(); }
static void InitializeEQueue() { ECommonConfiguration .Create() .UseAutofac() .RegisterCommonComponents() .UseLog4Net() .UseJsonNet() .RegisterUnhandledExceptionHandler() .RegisterEQueueComponents(); var address = ConfigurationManager.AppSettings["BrokerAddress"]; var brokerAddress = string.IsNullOrEmpty(address) ? SocketUtils.GetLocalIPV4() : IPAddress.Parse(address); var clientCount = int.Parse(ConfigurationManager.AppSettings["ClientCount"]); var setting = new ConsumerSetting { ConsumeFromWhere = ConsumeFromWhere.FirstOffset, MessageHandleMode = MessageHandleMode.Parallel, BrokerAddress = new IPEndPoint(brokerAddress, 5001), BrokerAdminAddress = new IPEndPoint(brokerAddress, 5002) }; var messageHandler = new MessageHandler(); for (var i = 1; i <= clientCount; i++) { new Consumer(ConfigurationManager.AppSettings["ConsumerGroup"], setting) .Subscribe(ConfigurationManager.AppSettings["Topic"]) .SetMessageHandler(messageHandler) .Start(); } }
static void Main(string[] args) { InitializeEQueue(); var messageHandler = new MessageHandler(); var consumerSetting = new ConsumerSetting { HeartbeatBrokerInterval = 1000, UpdateTopicQueueCountInterval = 1000, RebalanceInterval = 1000 }; var consumer = new Consumer("Consumer1", "Group1", consumerSetting).Subscribe("SampleTopic").SetMessageHandler(messageHandler).Start(); _logger.Info("Start consumer load balance, please wait for a moment."); var scheduleService = ObjectContainer.Resolve<IScheduleService>(); var waitHandle = new ManualResetEvent(false); var taskId = scheduleService.ScheduleTask("WaitQueueAllocationComplete", () => { var allocatedQueueIds = consumer.GetCurrentQueues().Select(x => x.QueueId); if (allocatedQueueIds.Count() == 4) { _logger.InfoFormat("Consumer load balance completed, allocated queueIds:{0}", string.Join(",", allocatedQueueIds)); waitHandle.Set(); } }, 1000, 1000); waitHandle.WaitOne(); scheduleService.ShutdownTask(taskId); Console.ReadLine(); }
static void InitializeEQueue() { ECommonConfiguration .Create() .UseAutofac() .RegisterCommonComponents() .UseLog4Net() .UseJsonNet() .RegisterUnhandledExceptionHandler() .RegisterEQueueComponents(); var clientCount = int.Parse(ConfigurationManager.AppSettings["ClientCount"]); var consumerSetting = new ConsumerSetting { ConsumeFromWhere = ConsumeFromWhere.FirstOffset }; var messageHandler = new MessageHandler(); for (var i = 1; i <= clientCount; i++) { new Consumer(ConfigurationManager.AppSettings["ConsumerGroup"], consumerSetting) .Subscribe(ConfigurationManager.AppSettings["Topic"]) .SetMessageHandler(messageHandler) .Start(); } }
static void Main(string[] args) { InitializeEQueue(); var messageHandler = new MessageHandler(); var consumerSetting = new ConsumerSetting { HeartbeatBrokerInterval = 1000, UpdateTopicQueueCountInterval = 1000, RebalanceInterval = 1000, ConsumeFromWhere = ConsumeFromWhere.FirstOffset }; var consumer = new Consumer("SampleConsumer@" + ObjectId.GenerateNewStringId(), "SampleGroup", consumerSetting).Subscribe("SampleTopic").SetMessageHandler(messageHandler).Start(); Console.ReadLine(); }
static void Main(string[] args) { InitializeEQueue(); var messageHandler = new MessageHandler(); var consumer1 = new Consumer("Consumer1", "group1").Subscribe("SampleTopic").Start(messageHandler); var consumer2 = new Consumer("Consumer2", "group1").Subscribe("SampleTopic").Start(messageHandler); var consumer3 = new Consumer("Consumer3", "group1").Subscribe("SampleTopic").Start(messageHandler); var consumer4 = new Consumer("Consumer4", "group1").Subscribe("SampleTopic").Start(messageHandler); var scheduleService = ObjectContainer.Resolve<IScheduleService>(); scheduleService.ScheduleTask(() => { Console.WriteLine(string.Format("Consumer message queue allocation. c1:{0}, c2:{1}, c3:{2}, c4:{3}", string.Join(",", consumer1.GetCurrentQueues().Select(x => x.QueueId)), string.Join(",", consumer2.GetCurrentQueues().Select(x => x.QueueId)), string.Join(",", consumer3.GetCurrentQueues().Select(x => x.QueueId)), string.Join(",", consumer4.GetCurrentQueues().Select(x => x.QueueId)))); }, 5000, 5000); Console.ReadLine(); }