当前位置: 首页 > news >正文

青海中小企业网站建设大良网站建设机构

青海中小企业网站建设,大良网站建设机构,北京建筑设计公司前十名,女人与马做受网站我们一般使用的是消费者作为被动方接收 RabbitMQ 推送消息,另一种是消费者作为主动方可以主动拉取消息。 RabbitMq 服务器推送消息分为隐式(自动)确认和显示确认。 1 消费者拉取消息 消费者作为主动方拉取消息,每次只能获取一条。 using (var channel c…

我们一般使用的是消费者作为被动方接收 RabbitMQ 推送消息,另一种是消费者作为主动方可以主动拉取消息。

RabbitMq 服务器推送消息分为隐式(自动)确认和显示确认。

1 消费者拉取消息

消费者作为主动方拉取消息,每次只能获取一条。

using (var channel = connection.CreateModel())
{BasicGetResult result = channel.BasicGet("PersistenceQueue", true);string message = Encoding.UTF8.GetString(result.Body.ToArray());Console.WriteLine($"拉取到消息:{message}");
}

2 RabbitMq服务器推送消息

消费者作为被动方接收RabbitMQ推送消息。

using (var channel = connection.CreateModel())
{EventingBasicConsumer consumer = new EventingBasicConsumer(channel);//就是Rabbitmq的服务器作为主动方---RabbitMq 推送消息到消费者来的;consumer.Received += (model, ea) =>{string message = Encoding.UTF8.GetString(ea.Body.ToArray());Console.WriteLine($"正常收到消息:{message}");};channel.BasicConsume(queue: "PersistenceQueue", autoAck: true, consumer: consumer);
}

3 隐式确认

当 RabbbitMQ 将消息发送给消费者后,消费者端接收到消息后,不等待消息处理结束,立即自动回送一个确认回执。

自动确认的用法十分简单,设置消费方法的参数 autoAck 为 true 即可,我们前边的例子都是使用的自动确认。

channel.BasicConsume(queue: "PersistenceQueue", autoAck: true, consumer: consumer);

4 显式确认

设置消费方法的参数 autoAck 为 false,channel.BasicAck可以一条一条确认后删除,也可使用 channel.BasicReject不删除。

//定义消费者                                      
EventingBasicConsumer consumer = new EventingBasicConsumer(channel);
int i = 0;
//就是Rabbitmq的服务器作为主动方---RabbitMq 推送消息到消费者来的;
consumer.Received += (model, ea) =>
{string message = Encoding.UTF8.GetString(ea.Body.ToArray());Console.WriteLine($"正常收到消息:{message}");if (i < 100){Console.WriteLine($"【{message}】消息已经被消费,同时从RabbitMQ服务器删除");channel.BasicAck(deliveryTag: ea.DeliveryTag, multiple: false);}else{Console.WriteLine($"【{message}】消息没有被正常消费,可以让消息不要删除");channel.BasicReject(deliveryTag: ea.DeliveryTag, requeue: true);//throw new Exception("消息消费异常了~");}i++;
};
//显式确认
channel.BasicConsume(queue: "PersistenceQueue", autoAck: false, consumer: consumer);

5 消息质量

channel.BasicQos可以设置每次从队列中取出几条消息进行消费。

channel.BasicQos(prefetchSize: 0, prefetchCount: 2, global: false);

方法中参数 prefetchSize 为预取的长度,一般设置为0即可,表示长度不限;

prefetchCount 表示预取的条数,即发送的最大消息条数;

global 表示是否在 Connection 中全局设置,true表示 Connetion 下的所有 channel 都设置为这个配置。

http://www.yayakq.cn/news/367257/

相关文章:

  • 网页代理访问网站之梦网站怎么做seo
  • delphi 网站开发仿卢松松博客wordpress
  • 哪个做砍价活动的网站好深圳旅游
  • 电子商务网站购物流程图微信开放平台怎么申请
  • 招聘网站做两份简历电子商务软文写作
  • 成都网站seo技术流程图在线制作免费
  • 广州市手机网站建设品牌成品视频直播软件推荐哪个好一点的
  • 专业网站推广的公司网站被降权后怎么办
  • 网站建设都有什么功能济宁网站建设公司怎么样
  • 济南网站搜索排名thinkphp网站开发技术
  • 网站运营托管方案开公司需要什么手续和证件
  • 三原做网站深圳网页设计公司有哪些
  • 景安备案网站站长统计是什么意思
  • 怎么开发手机网站phpcms中英文网站模板
  • 河南专业网站建设哪家好建网站为什么要租空间
  • 做网站是如何实施的做网站商城需要什么
  • 网站设计建议网络营销策略应遵循的原则
  • 网站建设公司理念区块链技术做网站
  • 重庆网站建设公司是什么意思樱花jsq30q211
  • 怎样破解网站后台密码网站开发设计心得
  • 深圳市龙华区沈阳网站建设seo优化
  • 海拉尔网站建设平台vs怎样建设新网站
  • iis怎么加载网站英文搜索网站
  • 自己做微信电影网站怎么做转短链接在线生成
  • 网站建设的搜索功能美仑-专门做服装的网站
  • 贸易网站源码企业官网制作公司
  • 做网站跟客人怎么沟通西渡网站建设
  • 做公司简介的开源网站邮件服务商
  • 沈阳网站制作流程做软件下载网站有哪些
  • 换接入商网站备案网站设计开发的难点