public Receive() { try { if (Consumer == null) { Consumer = new ConsumerProvider(); Consumer.Client = "DataMove"; Consumer.ClientName = "MoveMove"; Consumer.Config = new BusinessMQConfig() { ManageConnectString = "server=192.168.4.87;Initial Catalog=dyd_bs_MQ_manage;User ID=sa;Password=123456" }; Consumer.MaxReceiveMQThread = 1; Consumer.MQPath = "maohong"; Consumer.PartitionIndexs = new List <int>() { 1 }; } } catch (Exception e) { this.OpenOperator.Error("错误日志;", new Exception(e.Message)); } }
public override void Run() { if (Consumer == null) { Consumer = new ConsumerProvider(); Consumer.Client = "DataMove"; Consumer.Client = "MoveMove"; Consumer.Config = new BusinessMQConfig() { ManageConnectString = "server=192.168.4.69;Initial Catalog=dyd_bs_MQ_manage;User ID=sa;Password=123456;" }; Consumer.MaxReceiveMQThread = 1; Consumer.MQPath = "maohong"; Consumer.PartitionIndexs = new List <int>() { 1 }; //Consumer.RegisterReceiveMQListener<string>((r) => //{ // string str = r.ObjMsg; // r.MarkFinished(); //}); } }
public void ReceiveMessageDemo(Action<string> action) { if (Consumer == null) { Consumer = new ConsumerProvider(); Consumer.Client = "dyd.test.customer1";//clientid,接收消息的(消费者)唯一标示,一旦注册以后,不能更改,业务下线废弃后必须要告知运维,删除消费者注册。 Consumer.ClientName = "客户端名称";//这个相对随意些,主要是用来自己识别的,要简短 Consumer.Config = new BusinessMQConfig() { ManageConnectString = "server=192.168.17.237;Initial Catalog=dyd_bs_MQ_manage;User ID=sa;Password=Xx~!@#;" }; Consumer.MaxReceiveMQThread = 1;//并行处理的线程数,一般为1足够,若消息处理慢,又想并行消费,则考虑 正在使用的分区=并行处理线程数 为并行效率极端最优,但cpu消耗应该不小。 Consumer.MQPath = "dyd.test";//接收的队列要正确 Consumer.PartitionIndexs = new List<int>() { 1, 2, 3, 5, 6, 7, 8 };//消费者订阅的分区顺序号,从1开始 Consumer.RegisterReceiveMQListener<string>((r) => { /* * 这些编写业务代码 * 编写的时候要注意考虑,业务处理失败的情况。 * 1.重试失败n次。 * 2.重试还不行,则标记消息已被处理。然后跳过该消息处理,自己另外文档记录这种情况。 * 消息被消费完毕,一定要调用MarkFinished,标记消息被消费完毕。 */ action.Invoke(r.ObjMsg); r.MarkFinished(); }); } }
/// <summary> /// Запуск в работу всех блоков. /// </summary> public void Run(Settings settings) { // Хранилище готовых (сжатых) для записи в файл данных. var compressedDataStorage = new CompressedDataStorage(_writeTaskQueue); // Блок обработки (компресии/декомпрессии) исходных данных. var compressConsumers = new ConsumerProvider <DataPortion>(); for (var i = 0; i < ThreadCount; i++) { var compressConsumer = GetConsumer(settings.Mode, _compressingTaskQueue); compressConsumer.RegisterOutputStorage(compressedDataStorage); compressConsumers.Add(compressConsumer); } using (var writer = new Writer(settings.DestinationFilename)) { // Блок сохранения в файл готовых данных var writerConsumer = new WriterConsumer(writer, _writeTaskQueue.Tasks); // Блок чтения исходных данных var blockSizeDefinder = GetBlockSizeDefinder(settings.Mode); var sourceProducer = new SourceDataProducer(_compressingTaskQueue); sourceProducer.Run(settings.SourceFilename, blockSizeDefinder); // Ждём пока блок компресии не закончит работу compressConsumers.WaitTillTaskCompleted(); // Говорим, что от блока компресии в блок сохранения больше заданий не будет _writeTaskQueue.Completed(); // Ждём пока не закончится сохранение в файл writerConsumer.Wait(); } }
public void ReceiveMessageDemo(Action <string> action) { if (Consumer == null) { Consumer = new ConsumerProvider(); Consumer.Client = "dyd.test.customer1"; //clientid,接收消息的(消费者)唯一标示,一旦注册以后,不能更改,业务下线废弃后必须要告知运维,删除消费者注册。 Consumer.ClientName = "客户端名称"; //这个相对随意些,主要是用来自己识别的,要简短 Consumer.Config = new BusinessMQConfig() { ManageConnectString = "server=192.168.17.237;Initial Catalog=dyd_bs_MQ_manage;User ID=sa;Password=Xx~!@#;" }; Consumer.MaxReceiveMQThread = 1; //并行处理的线程数,一般为1足够,若消息处理慢,又想并行消费,则考虑 正在使用的分区=并行处理线程数 为并行效率极端最优,但cpu消耗应该不小。 Consumer.MQPath = "dyd.test"; //接收的队列要正确 Consumer.PartitionIndexs = new List <int>() { 1, 2, 3, 5, 6, 7, 8 }; //消费者订阅的分区顺序号,从1开始 Consumer.RegisterReceiveMQListener <string>((r) => { /* * 这些编写业务代码 * 编写的时候要注意考虑,业务处理失败的情况。 * 1.重试失败n次。 * 2.重试还不行,则标记消息已被处理。然后跳过该消息处理,自己另外文档记录这种情况。 * 消息被消费完毕,一定要调用MarkFinished,标记消息被消费完毕。 */ action.Invoke(r.ObjMsg); r.MarkFinished(); }); } }
public void Receive() { try { if (Consumer == null) { Consumer = new ConsumerProvider(); Consumer.Client = "DataMove"; Consumer.ClientName = "MoveMove"; //string path = AppDomain.CurrentDomain.BaseDirectory + "\\Config\\ConfigCenter.json"; //string json = File.ReadAllText(path, Encoding.Default); Consumer.Config = new BusinessMQConfig() { ManageConnectString = "server=192.168.4.117;Initial Catalog=dyd_bs_MQ_manage;User ID=sa;Password=123456;" }; Consumer.MaxReceiveMQThread = 1; Consumer.MQPath = "maohong"; Consumer.PartitionIndexs = new List <int>() { 1 }; } } catch (Exception e) { this.OpenOperator.Error("错误日志;", new Exception(e.Message)); } }
public override void Run() { try { if (Consumer == null) { Consumer = new ConsumerProvider(); Consumer.Client = "DataMove"; Consumer.ClientName = "MoveMove"; Consumer.Config = new BusinessMQConfig() { ManageConnectString = GetConfig.ManagerConnectStr }; Consumer.MaxReceiveMQThread = 1; Consumer.MQPath = GetConfig.MqPath; Consumer.PartitionIndexs = new List <int>() { 1 }; } } catch (Exception e) { string str = e.Message; } }
/// <summary> /// 关闭消息订阅连接 /// </summary> public void CloseReceiveMessage() { //注册消费者消息,消费者务必要在程序关闭后关掉(dispose)。否则导致异常终止,要人工等待连接超时后,方可重新注册。 if (Consumer != null) { Consumer.Dispose(); Consumer = null; } }
public ConsumerProviderTests() { _mockMerQureConsumer = new Mock <IConsumer>(); _mockMessagingService = new Mock <IMessagingService>(); _mockMessagingService.Setup(m => m.GetConsumer(It.IsAny <string>())).Returns(_mockMerQureConsumer.Object); _consumerProvider = new ConsumerProvider(_mockMessagingService.Object); }
/// <summary> /// 关闭消息队列 /// </summary> public void CloseReceiveMessage() { try { if (Consumer != null) { Consumer.Dispose(); Consumer = null; } base.Dispose(); } catch (Exception e) { string str = e.Message; Consumer = null; } }
public ConsumerService(ILogger <ConsumerService> logger, ConsumerProvider provider) { _logger = logger; _provider = provider; }
public ConsumerKiller(ILogger <ConsumerKiller> logger, ConsumerProvider provider) : base(logger, provider) { }