/// <summary> /// 获得简单消费者服务 /// </summary> /// <param name="exchangeName">交换机名称</param> /// <param name="queueName">队列名称</param> /// <param name="channelNumber">通道数量</param> /// <param name="Durable">持久化</param> /// <returns></returns> public ConsumingService GetSimplestConsumingService(string exchangeName, string queueName, int channelNumber = 1, bool Durable = false) { var config = new ConsumingConfig { Encoding = Encoding.UTF8, ExchangeConfig = new ExchangeConfig { ExchangeName = exchangeName }, HostName = _config.HostName, Port = _config.Port, UserName = _config.UserName, Password = _config.Password, QueueConfig = new QueueConfig { Durable = Durable, QueueName = queueName, }, Timeout = _config.Timeout, ChannelNumber = channelNumber, MaxMessageCount = 1 }; return(new ConsumingService(config)); }
/// <summary> /// 通道反注册 /// </summary> /// <param name="channel">通道</param> /// <param name="send">对象</param> /// <param name="e">参数</param> /// <param name="config">配置</param> /// <returns></returns> private void Unregistered(IModel channel, object send, ConsumerEventArgs e, ConsumingConfig config) { Console.WriteLine($"通道反注册:{e.ConsumerTags}"); }
/// <summary> /// 接收到消息 /// </summary> /// <param name="channel">通道</param> /// <param name="body"></param> /// <param name="send">对象</param> /// <param name="e">参数</param> /// <param name="config">配置</param> /// <returns></returns> private void Received(IModel channel, ReadOnlyMemory <byte> body, object send, BasicDeliverEventArgs e, ConsumingConfig config) { var message = body.ToString(); Console.WriteLine($"[{DateTime.Now:HH:mm:ss}]:{message}"); channel.BasicAck(e.DeliveryTag, false); }
/// <summary> /// 通道关闭 /// </summary> /// <param name="channel">通道</param> /// <param name="send">对象</param> /// <param name="e">参数</param> /// <param name="config">配置</param> /// <returns></returns> private async Task ShutdownAsync(IModel channel, object send, ShutdownEventArgs e, ConsumingConfig config) { await Task.Run(() => { Console.WriteLine($"通道关闭:{e.ReplyText}"); }); }
/// <summary> /// 通道反注册 /// </summary> /// <param name="channel">通道</param> /// <param name="send">对象</param> /// <param name="e">参数</param> /// <param name="config">配置</param> /// <returns></returns> private async Task UnregisteredAsync(IModel channel, object send, ConsumerEventArgs e, ConsumingConfig config) { await Task.Run(() => { Console.WriteLine($"通道反注册:{e.ConsumerTags}"); }); }
/// <summary> /// 通道关闭 /// </summary> /// <param name="channel">通道</param> /// <param name="send">对象</param> /// <param name="e">参数</param> /// <param name="config">配置</param> /// <returns></returns> private void Shutdown(IModel channel, object send, ShutdownEventArgs e, ConsumingConfig config) { Console.WriteLine($"通道关闭:{e.ReplyText}"); }
public ConsumingService(ConsumingConfig config) : base(config) { _config = config; }
/// <summary> /// 接收到消息 /// </summary> /// <param name="channel">通道</param> /// <param name="body"></param> /// <param name="send">对象</param> /// <param name="e">参数</param> /// <param name="config">配置</param> /// <returns></returns> private void Received(IModel channel, byte[] body, object send, BasicDeliverEventArgs e, ConsumingConfig config) { string message = config.Encoding.GetString(body); Console.WriteLine($"[{DateTime.Now:HH:mm:ss}]:{message}"); channel.BasicAck(e.DeliveryTag, false); }