public void ReceiveMessageDemo(Action<string> action) { //注册消费者消息,ConnInfo务必要在程序关闭后关掉(dispose)。否则导致异常终止,要人工等待连接超时后,方可重新注册。 ConnInfo = XXF.ProjectTool.MQHelper.ReceiveMessage<string>(new XXF.ProjectTool.ReceiveMessageBusinessMQConfig() { ManageConnectString = "server=192.168.17.237;Initial Catalog=dyd_bs_MQ_manage;User ID=sa;Password=Xx~!@#;", MaxReceiveMQThread = 1,//并行处理的线程数,一般为1足够,若消息处理慢,又想并行消费,则考虑 正在使用的分区=并行处理线程数 为并行效率极端最优,但cpu消耗应该不小。 PartitionIndexs = new List<int> {1,2,3,4,5,6,7,8 }//消费者订阅的分区顺序号,从1开始 }, "dyd.test", //接收的队列要正确 "dyd.test.customer1", //clientid,接收消息的(消费者)唯一标示,一旦注册以后,不能更改,业务下线废弃后必须要告知运维,删除消费者注册。 (r) =>//接收消息的回调 { /* * 这些编写业务代码 * 编写的时候要注意考虑,业务处理失败的情况。 * 1.重试失败n次。 * 2.重试还不行,则标记消息已被处理。然后跳过该消息处理,自己另外文档记录这种情况。 * 消息被消费完毕,一定要调用MarkFinished,标记消息被消费完毕。 */ action.Invoke(r.ObjMsg); r.MarkFinished();//告知BusinessMQ改消息已经被消费,被处理完毕。否则消息会报错,该分区下的消息消费被终止。 }); }
public void ReceiveMessageDemo(Action <string> action) { //注册消费者消息,ConnInfo务必要在程序关闭后关掉(dispose)。否则导致异常终止,要人工等待连接超时后,方可重新注册。 ConnInfo = XXF.ProjectTool.MQHelper.ReceiveMessage <string>(new XXF.ProjectTool.ReceiveMessageBusinessMQConfig() { ManageConnectString = "server=192.168.17.237;Initial Catalog=dyd_bs_MQ_manage;User ID=sa;Password=Xx~!@#;", MaxReceiveMQThread = 1,//并行处理的线程数,一般为1足够,若消息处理慢,又想并行消费,则考虑 正在使用的分区=并行处理线程数 为并行效率极端最优,但cpu消耗应该不小。 PartitionIndexs = new List <int> { 1, 2, 3, 4, 5, 6, 7, 8 } //消费者订阅的分区顺序号,从1开始 }, "dyd.test", //接收的队列要正确 "dyd.test.customer1", //clientid,接收消息的(消费者)唯一标示,一旦注册以后,不能更改,业务下线废弃后必须要告知运维,删除消费者注册。 (r) => //接收消息的回调 { /* * 这些编写业务代码 * 编写的时候要注意考虑,业务处理失败的情况。 * 1.重试失败n次。 * 2.重试还不行,则标记消息已被处理。然后跳过该消息处理,自己另外文档记录这种情况。 * 消息被消费完毕,一定要调用MarkFinished,标记消息被消费完毕。 */ action.Invoke(r.ObjMsg); r.MarkFinished(); //告知BusinessMQ改消息已经被消费,被处理完毕。否则消息会报错,该分区下的消息消费被终止。 }); }
public override void Dispose() { if (ConnInfo != null) { ConnInfo.Dispose(); ConnInfo = null; } }
/// <summary> /// 关闭消息订阅连接 /// </summary> public void CloseReceiveMessage() { //注册消费者消息,ConnInfo务必要在程序关闭后关掉(dispose)。否则导致异常终止,要人工等待连接超时后,方可重新注册。 if (ConnInfo != null) { ConnInfo.Dispose(); ConnInfo = null; } }
public override void Run() { if (ConnInfo == null) { //注册消费者消息,ConnInfo务必要在程序关闭后关掉(dispose)。否则导致异常终止,要人工等待连接超时后,方可重新注册。 ConnInfo = XXF.ProjectTool.MQHelper.ReceiveMessage<string>(new XXF.ProjectTool.ReceiveMessageBusinessMQConfig() { ManageConnectString = "server=192.168.17.201;Initial Catalog=dyd_bs_MQ_manage;User ID=sa;Password=Xx~!@#;", MaxReceiveMQThread = 1,//并行处理的线程数,一般为1足够,若消息处理慢,又想并行消费,则考虑 正在使用的分区=并行处理线程数 为并行效率极端最优,但cpu消耗应该不小。 PartitionIndexs = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8 }//消费者订阅的分区顺序号,从1开始 }, "dyd.mytest", //接收的队列要正确 "dyd.mytest.customer1", //clientid,接收消息的(消费者)唯一标示,一旦注册以后,不能更改,业务下线废弃后必须要告知运维,删除消费者注册。 (r) =>//接收消息的回调 { this.OpenOperator.Log("测试消息接收测试:" + r.ObjMsg); r.MarkFinished();//告知BusinessMQ改消息已经被消费,被处理完毕。否则消息会报错,该分区下的消息消费被终止。 }); } this.OpenOperator.Log("测试消息注册成功"); }
public override void Run() { if (ConnInfo == null) { //注册消费者消息,ConnInfo务必要在程序关闭后关掉(dispose)。否则导致异常终止,要人工等待连接超时后,方可重新注册。 ConnInfo = XXF.ProjectTool.MQHelper.ReceiveMessage <string>(new XXF.ProjectTool.ReceiveMessageBusinessMQConfig() { ManageConnectString = "server=192.168.17.201;Initial Catalog=dyd_bs_MQ_manage;User ID=sa;Password=Xx~!@#;", MaxReceiveMQThread = 1,//并行处理的线程数,一般为1足够,若消息处理慢,又想并行消费,则考虑 正在使用的分区=并行处理线程数 为并行效率极端最优,但cpu消耗应该不小。 PartitionIndexs = new List <int> { 1, 2, 3, 4, 5, 6, 7, 8 } //消费者订阅的分区顺序号,从1开始 }, "dyd.mytest", //接收的队列要正确 "dyd.mytest.customer1", //clientid,接收消息的(消费者)唯一标示,一旦注册以后,不能更改,业务下线废弃后必须要告知运维,删除消费者注册。 (r) => //接收消息的回调 { this.OpenOperator.Log("测试消息接收测试:" + r.ObjMsg); r.MarkFinished(); //告知BusinessMQ改消息已经被消费,被处理完毕。否则消息会报错,该分区下的消息消费被终止。 }); } this.OpenOperator.Log("测试消息注册成功"); }