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

南宁会员网站制作深圳网站搭建找谁

南宁会员网站制作,深圳网站搭建找谁,科技型中小企业服务网,东莞整站优化排名一、应答模式 RabbitMQ 中的消息应答模式主要包括两种#xff1a;自动应答#xff08;Automatic Acknowledgement#xff09;和手动应答#xff08;Manual Acknowledgement#xff09;。#xff08;一般交换机发送消息#xff0c;RabbitMQ只有在接收到消费者的确认后才…一、应答模式 RabbitMQ 中的消息应答模式主要包括两种自动应答Automatic Acknowledgement和手动应答Manual Acknowledgement。一般交换机发送消息RabbitMQ只有在接收到消费者的确认后才会将消息从队列中删除。在队列发送消息时首先会先复制一份给消费者在收到消费者的确认消息后队列才会将队列中的消息删除。 1、自动应答 不在乎消费者对消息处理是否成功都会告诉队列删除消息。如果处理消息失败实现自动补偿队列投递过去 重新处理。 2、手动应答 在手动应答模式下消费者在接收到消息后并不会立即向RabbitMQ确认消息已处理完毕。消费者需要显式调用basicAck方法来确认消息处理完成RabbitMQ只有在接收到消费者的确认后才会将消息从队列中删除。 采用手动应答可以提高消息的可靠性即使消费者在处理消息过程中出现问题只要未发送ack确认RabbitMQ会在重新连接后再次将消息发送给该消费者。 如果消费者在处理消息前断开了连接或者在处理消息期间抛出了未捕获的异常RabbitMQ会认为消息未被正确处理从而重新排队消息确保消息至少会被消费一次at least once delivery。 二、SpringBoot如何实现两种应答。 1、自动应答 在Spring Boot的配置文件application.properties中对于RabbitMQ监听器设置自动应答模式默认就是自动应答 可以在配置文件中设置自动应答 # 自动应答模式 spring.rabbitmq.listener.simple.acknowledge-mode auto Component public class AutoAcknowledgementConsumer {RabbitListener(queues yourQueue)public void consumeMessage(String message, Message amqpMessage) {// 处理消息...// 框架会在方法执行完成后自动发送ack确认消息} } 自动应答的效果开启自动应答如果出现异常消费者没有返回确认信息交换机就会不停发送消息。 会不停的发送请求 2、 手动应答 首先同样在配置文件中启用手动应答模式 # 手动应答模式 spring.rabbitmq.listener.simple.acknowledge-mode manual RabbitListener(queues direct_01)public void receiveMessage(Ordering ordering, Message message, Channel channel) throws IOException {long deliveryTag message.getMessageProperties().getDeliveryTag();System.out.println(消费者434接收到消息 ordering);try {// 处理成功手动发送ack确认yesint i 5 / 0;channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);} catch (Exception e) {// 处理失败可以选择重试或拒绝消息basicNack或basicRejectchannel.basicNack(deliveryTag, false, false); // b表示是否批量b1表示是否并重新入队,选择不重新入队后消息便会丢失}} 3.如何解决死循环重试机制 #应答模式 手动应答需要开发者手动应答 spring.rabbitmq.listener.simple.acknowledge-modeAUTO#批量预抓取数量,提高执行效率 spring.rabbitmq.listener.simple.prefetch 10 #开启消费者重试机制 spring.rabbitmq.listener.simple.retry.enabled true #重试的最大次数 spring.rabbitmq.listener.simple.retry.max-attempts 6 #重试间隔时间 spring.rabbitmq.listener.simple.retry.initial-interval 3000 #重试间隔倍数默认值是1 spring.rabbitmq.listener.simple.retry.multiplier 2 #最大间隔时间默认值是10s spring.rabbitmq.listener.simple.retry.max-interval 15000 四、SimpleMessageListenerContainer和DirectMessageListenerContainer区别 SimpleMessageListenerContainer和DirectMessageListenerContainer都是Spring AMQP提供的消息监听容器它们之间的区别在于 SimpleMessageListenerContainer是基于AMQP协议的而DirectMessageListenerContainer是基于RabbitMQ的因此SimpleMessageListenerContainer可以用于其他的AMQP实现而DirectMessageListenerContainer只能用于RabbitMQ。 SimpleMessageListenerContainer支持订阅多个队列可以使用通配符等方式进行配置而DirectMessageListenerContainer只能订阅一个队列。 SimpleMessageListenerContainer支持自动声明队列和绑定而DirectMessageListenerContainer需要手动声明和绑定队列。 SimpleMessageListenerContainer支持多线程处理消息而DirectMessageListenerContainer只能单线程处理消息。 因此如果需要监听多个队列或者使用其他的AMQP实现可以选择SimpleMessageListenerContainer如果只需要监听一个队列并且使用RabbitMQ可以选择DirectMessageListenerContainer。
http://www.hkea.cn/news/14524782/

相关文章:

  • 网站制作常见问题网页微信怎么登录
  • 有哪些网站免费做推广建网站算法
  • 公司网站建设推广方案模板在线平台
  • 制作钓鱼网站的费用建网站难吗?
  • 微网站做下载链接水滴保险官方网站
  • 建设网站找什么条件苏州交通网站建设
  • 企业网站建立哪做网站预算
  • 汉川网站推广服务房产备案价格查询官网
  • 上海建材网站宝塔windows建设网站
  • 如何在网站源码做授权科技公司取名大全
  • 怎么建设一个漫画网站石家庄网站改版
  • 万网如何上传静态网站百盛联合建设集团有限公司网站
  • 什么网络营销百度快照优化seo
  • 自己写代码做网站要什么技术网站有没有做网站地图怎么看
  • 深圳高端品牌网站建设百度搜索收录提交入口
  • 暖通设计网站推荐泉州茶叶网站建设
  • 建设网站上传软件wordpress免费主题推荐
  • 手机制作ppt百度搜索引擎优化
  • 安徽省建设厅焊工证查询网站网站建设 万网
  • 亚马逊网站网址是多少建设好网站怎么付费推广
  • 网站建设的常用技术有哪些做微信公众号页面的网站
  • 公司设计网站需要多久微信网站平台建设
  • 基于ASP与Access数据库的网站开发上海高端网站建设公
  • 订阅号做微网站宽屏网站设计
  • 企业网站改版升级叫别人做网站后怎么更改密码
  • 绥化建设局网站php做的网站
  • 粘贴以下代码到网站首页代码的与标签之间龙华营销型网站建设公司
  • 网站建设运营的灵魂是网站建立者
  • 小型购物网站开发费用广州搜狗快速排名原
  • 亚购物车功能网站怎么做的网站建设用什么网站好一点