public void ExtuteMQ <T>(MQEnum Type) where T : new() { Task.Run(() => { AcceptEntity accept = new AcceptEntity(); if (Type == MQEnum.Push) { accept.SendType = MQEnum.Push; accept.ExchangeName = "Message.Direct"; accept.QueeName = "Meesage.DirectQuene"; accept.RouteName = "RouteKey"; } else if (Type == MQEnum.Sub) { accept.SendType = MQEnum.Sub; accept.ExchangeName = "Message.Fanout"; accept.QueeName = "Meesage.FanoutQuene"; } else { accept.SendType = MQEnum.Top; accept.ExchangeName = "Message.Topic"; accept.QueeName = "Meesage.FanoutQuene"; accept.RouteName = "RouteKey"; } MQFactory.Subscriber <Accept, T>(accept); }); }
private void StartProducer(ChainwayMQConfig config) { var producer = MQFactory.CreatePushComsumer(config)[0]; producer.ConsumeMessage += Producer_ConsumeMessage; producer.Start(); }
public override void Open() { if (_producer == null) { _producer = MQFactory.CreateProducer(); _producer.start(); } }
protected int StartConsumer(ChainwayMQConfig config, PipeWorker worker) { ChainwayPullConsumer consumer; int count = 0; config.Topic.ForEach(p => { if (!_consumerDic.ContainsKey(config.Group)) { consumer = MQFactory.CreatePullComsumer(config.Group, config.Address, -1); _consumerDic[config.Group] = consumer; } else { consumer = _consumerDic[config.Group]; } if (!consumer.Connected) { consumer.Start(); } var messages = consumer.fetchSubscribeMessageQueues(p); var messagesTemp = messages.toArray(); long offset = 0; foreach (MessageQueue queue in messagesTemp) { offset = consumer.fetchConsumeOffset(queue, true); if (offset < 0) { offset = 0; } var result = consumer.pull(queue, "*", offset, 10000); if (result.getPullStatus() != PullStatus.FOUND) { continue; } var list = result.getMsgFoundList()?.toArray(); if (list == null) { continue; } foreach (Message item in list) { if (Consumer_ConsumeMessage(consumer.getConsumerGroup(), item, worker) == ConsumeConcurrentlyStatus.CONSUME_SUCCESS) { count++; consumer.UpdateOffset(queue, offset + 1); offset = result.getNextBeginOffset(); } else { break; } } } }); return(count); }
public void StartConsumer(ChainwayMQConfig config) { _consumer = MQFactory.CreatePushComsumer(config); _consumer.ForEach(t => { t.ConsumeMessage += Consumer_ConsumeMessage; _logger.Write(t.getNamesrvAddr()); t.start(); }); }
private void btnConsume_Click(object sender, EventArgs e) { var consumer = MQFactory.CreatePushComsumer(); consumer.ForEach(t => { t.ConsumeMessage += Consumer_ConsumeMessage; t.start(); }); MessageBox.Show("listener started"); }
public ProjectInstaller() { InitializeComponent(); FileInfo file = new FileInfo(this.GetType().Assembly.Location); MQFactory.LoadConfig(file.Directory.FullName); //System.IO.Directory.SetCurrentDirectory(System.AppDomain.CurrentDomain.BaseDirectory); if (!string.IsNullOrEmpty(MQFactory.Consumerconfig[0].ServiceName)) { this.serviceInstaller1.ServiceName = this.serviceInstaller1.DisplayName = MQFactory.Consumerconfig[0].ServiceName; } }
private void btnProduce_Click(object sender, EventArgs e) { var producer = MQFactory.CreateProducer(); producer.start(); producer.send(new ChainwayMessage("syncdata-100-7") { Body = txbProduce.Text }); producer.shutdown(); }
static void Main(string[] args) { var a = DateTime.Now; Console.WriteLine("Hello World!"); var mq = MQFactory.GetMQ(); Action act1 = () => { Test1(); }; Action act2 = () => { Test2(); }; mq.JoinQueue("test", act2, null); mq.JoinQueue("test", act1, null); Console.ReadKey(); }
public void StartTableWatcher(ChainwayMQConfig mqconfig) { if (_producer == null) { _logger.Write("准备监听mq"); _producer = MQFactory.CreateProducer(); _producer.start(); _logger.Write("mq监听完毕"); } _logger.Write("准备进入循环"); while (true) { foreach (var c in config) { try { //替换表名中的日期占位符 if (_tasks.ContainsKey(c.IDOrTableName)) { continue; } _logger.Write(string.Format("数据监视器正在启动,以监视表:{0}", c.IDOrTableName)); Task t = new Task(() => { try { TableWatcher watcher = new TableWatcher(c, mqconfig, _producer); _tasks[c.IDOrTableName] = watcher; watcher.Start(); } catch (Exception ex) { _logger.WriteException(ex); } }); t.Start(); _logger.Write(string.Format("数据监视器正在监视表:{0}", c.IDOrTableName)); } catch (Exception ex) { _logger.WriteException(ex); } } //休眠一小时 Thread.Sleep(1000 * 60 * 60); } }
public ChainwayProducer GetProducer(string groupName, string nameAddress) { ChainwayProducer producer = null; if (_producerDic.ContainsKey(groupName)) { producer = _producerDic[groupName]; } else { producer = MQFactory.CreateProducer(groupName, nameAddress, -1); _producerDic[groupName] = producer; producer.start(); } return(producer); }
public void RunRepServer() { var s = MQFactory.MakeRepServer("tcp://127.0.0.1:18848"); int cc = 0; string exit = ""; s.Respose = (r) => { cc++; exit = r; string re = ""; if (cc >= 10) { re = "exit"; } else { int t = 0; if (int.TryParse(r, out t)) { if (t % 2 == 0) { re = string.Format("{0} is Even.", t); } else { re = string.Format("{0} is Odd.", t); } } else { re = "Not a Number::" + r; } } Console.WriteLine("次数:" + cc); Console.WriteLine("收到:" + r); Console.WriteLine("回复:" + re); return(re); }; while (exit != "exit") { Thread.Sleep(100); } }
public RpcServer(DistributedMQConfig distributedMQConfig, IList <string> routeKeyList, string applicationId) : base(distributedMQConfig) { this.MQConfig = distributedMQConfig; this.MsgQueue = MQFactory.Create(distributedMQConfig, MessageQueueTypeEnum.RabbitMq, routeKeyList, applicationId); this.MsgQueue.ReceiveMQ(delegate(MQMessage msg) { if ((msg != null) && (msg.Response != null)) { MQMsgRequest request1 = new MQMsgRequest { Exchange = msg.Response.Exchange, RequestRouteKey = msg.Response.ResponseRouteKey }; msg.Request = request1; msg.Response = null; } if (this.ReciveMsgedEvent != null) { this.ReciveMsgedEvent(msg); } }); }
public RpcClient(DistributedMQConfig distributedMQConfig, MQMsgRequest mQMsgRequest = null, string applicationId = null) : base(distributedMQConfig) { this.ApplicationId = applicationId; this.MQConfig = distributedMQConfig; this.MsgQueue = MQFactory.Create(this.MQConfig, MessageQueueTypeEnum.RabbitMq, null, applicationId); if (!string.IsNullOrEmpty(this.MQConfig.ProducerID)) { this.MsgQueue.DeleteMQ(this.MQConfig.ProducerID, true, true); } string str = IdentityHelper.NewSequentialGuid().ToString("N"); if (string.IsNullOrEmpty(this.MQConfig.Exchange)) { this.MQConfig.Exchange = MQDefaultSetting._Exchange; } MQMsgResponse response1 = new MQMsgResponse { Exchange = this.MQConfig.Exchange, ResponseQueue = MQDefaultSetting._prefixQueue + "-" + str, ResponseRouteKey = str }; this._mQMsgResponse = response1; if (mQMsgRequest == null) { MQMsgRequest request1 = new MQMsgRequest { Exchange = this.MQConfig.Exchange, RequestRouteKey = MQDefaultSetting._RequestRouteKey }; this._mQMsgRequest = request1; } else { this._mQMsgRequest = mQMsgRequest; } }
private static void fileWatcher_Changed(object sender, FileSystemEventArgs e) { MQFactory.LoadConfig(); }
public void Start() { MQFactory.LoadConfig(); while (!IsStop) { try { var table = GetTopNData(MQFactory.Producerconfig[0].Top); if (table.Rows.Count > 0) { var list = table.ToList <T_Sync_Temp>(); list = (from l in list orderby l.Address select l).ToList(); string currentAddress = null; ChainwayProducer producer = null; foreach (var data in list) { if (string.IsNullOrEmpty(currentAddress)) { currentAddress = data.Address; } if (!currentAddress.Equals(data.Address)) { if (producer != null) { producer.shutdown(); } producer = new ChainwayProducer(data.Group); producer.setNamesrvAddr(data.Address); producer.start(); } else if (producer == null) { producer = new ChainwayProducer(data.Group); producer.setNamesrvAddr(data.Address); producer.start(); } var topics = data.Topic.Split(','); foreach (var t in topics) { ChainwayMessage msg = new ChainwayMessage(t); msg.Body = data.Data; msg.setKeys(data.TableName); msg.setTags(data.Tags); producer.Send(msg); } currentAddress = data.Address; } if (producer != null) { producer.shutdown(); } } else { Thread.Sleep(10 * 1000); } } catch (Exception ex) { _logger.WriteException(ex); Thread.Sleep(10 * 1000); } } }