public void Init() { this.queueList = new List <QueueInfo>(); if (originQueueList?.Count > 0) { foreach (var q in originQueueList) { this.queueList.Add(BuildQueueInfo(q)); } } else if (!string.IsNullOrEmpty(queue)) { if (queueCount == 1) { queueList.Add(BuildQueueInfo(queue)); } else { for (int i = 0; i < QueueCount; i++) { queueList.Add(BuildQueueInfo(queue + "_" + i)); } } } //申明exchange RabbitMQClient.ExchangeDeclare(this.exchange).Wait(); }
public void Init() { for (int i = 0; i < QueueCount; i++) { nodeList.Add(Queue + "_" + i); } _CHash = new ConsistentHash(nodeList, QueueCount * 10); //申明exchange RabbitMQClient.ExchangeDeclare(this.Exchange).Wait(); }
public async Task Start(List <ConsumerInfo> consumerList) { if (consumerList != null) { var channel = await RabbitMQClient.PullModel(); for (int i = 0; i < consumerList.Count; i++) { var consumer = consumerList[i]; consumer.Channel = channel; channel.Model.ExchangeDeclare(consumer.Exchange, "direct", true); channel.Model.QueueDeclare(consumer.Queue, true, false, false, null); channel.Model.QueueBind(consumer.Queue, consumer.Exchange, consumer.RoutingKey); consumer.BasicConsumer = new EventingBasicConsumer(consumer.Channel.Model); consumer.BasicConsumer.Received += (ch, ea) => { try { consumer.Handler.Notice(ea.Body).ContinueWith(t => { if (t.Exception == null && !t.IsCanceled) { consumer.Channel.Model.BasicAck(ea.DeliveryTag, false); } else if (t.Exception != null) { throw t.Exception; } else if (t.IsCanceled) { throw new Exception("Message processing timeout"); } }).GetAwaiter().GetResult(); } catch (Exception exception) { //需要记录错误日志 var e = exception.InnerException ?? exception; logger.LogError(e, $"An error occurred in {consumer.Exchange}-{consumer.Queue}"); ReStart(consumer);//重启队列 } }; consumer.BasicConsumer.ConsumerTag = consumer.Channel.Model.BasicConsume(consumer.Queue, false, consumer.BasicConsumer); if (i % 4 == 0 && i != 0) { channel = await RabbitMQClient.PullModel(); } if (!ConsumerAllList.Contains(consumer)) { ConsumerAllList.Add(consumer); } } } }
public MQServiceContainer(IServiceProvider svProvider) { this.serviceProvider = svProvider; RabbitMQClient.Init(svProvider); }
public void Dispose() { RabbitMQClient.PushModel(this); }
public static void InitRabbitMq(this IServiceProvider provider) { RabbitMQClient.Init(provider); }
public RabbitSubManager(ILogger <RabbitSubManager> logger, IServiceProvider provider) { this.logger = logger; this.provider = provider; RabbitMQClient.Init(provider); }
public MQServiceContainer(IOptions <RabbitConfig> config) { RabbitMQClient.Init(config); }
public static Task PublishByCmd <T>(this RabbitPubAttribute rabbitMQInfo, UInt16 cmd, T data, string key) { return(RabbitMQClient.PublishByCmd <T>(cmd, data, rabbitMQInfo.Exchange, rabbitMQInfo.GetQueue(key))); }
public RabbitSubManager(ILogger <RabbitSubManager> logger, IServiceProvider provider) { this.logger = logger; this.provider = provider; RabbitMQClient.Init(provider.GetService <IOptions <RabbitConfig> >()); }