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

新网网站制作商品标题seo是什么意思

新网网站制作,商品标题seo是什么意思,品牌建设论文怎么写,wordpress插件的开发RabbitMQ 消息自动重试机制: 让我们消费者处理我们业务代码的时候,如果抛出异常的情况下,在这时候 MQ 会自动触发重试机制,默认的情况下 RabbitMQ 时无限次数的重试需要认为指定重试次数限制问题 在什么情况下消费者实现重试策略…
  1. RabbitMQ 消息自动重试机制:
    1. 让我们消费者处理我们业务代码的时候,如果抛出异常的情况下,在这时候 MQ 会自动触发重试机制,默认的情况下 RabbitMQ 时无限次数的重试
    2. 需要认为指定重试次数限制问题
  2. 在什么情况下消费者实现重试策略:
    1. 消费者调用第三方接口,但是调用第三方接口失败后,需要实现重试策略,网络延迟只是暂时调不通,重试多次有可能会调通
    2. 消费者获取代码后,因为代码问题抛出数据异常,此时不需要实现重试策略
      1. 我们需要将日志存放起来,后期通过定时任务或者人工补偿形式
      2. 如果是重试多次还是失败消息,需要重新发布消费者版本实现消费
      3. 可以使用死信队列
    3. MQ 在重试的过程中,可能会引发消费者重复消费的问题
    4. MQ 消费者需要解决幂等性问题
      1. 幂等性:保证数据唯一
  3. 解决幂等性问题:
    1. 生产者在投递消息的时候,生成一个唯一 id 放在我们消息中
    2. 消费者获取到该消息,可以根据全局唯一 id 实现去重
    3. 全局唯一 id 根据业务来定的,订单号码作为全局的 id 
    4. 实际上还是需要在 DB 层面解决数据防重复
    5. 业务逻辑是在做 insert 操作使用唯一主键约束
    6. 业务逻辑是在做 update 操作,使用乐观锁
      1. 当消费者业务逻辑代码中抛出异常自动实现重试(默认是无数次重试)
      2. 应该对 RabbitMQ 重试次数实现限制,比如最多重试 5 次,每次间隔 30 秒
      3. 重试多次还是失败的情况下,存放到死信队列或者存放到数据库表中记录后期人工补偿
  4. 如何选择消息重试:
    1. 消费者获取消息后,调用第三方接口,但是调用第三方接口失败后是否要重试?
    2. 消费者获取消息后,如果代码问题抛出数据异常,是否需要重试?
    3. 总结:
      1. 如果消费者处理消息时,因为代码原因抛出异常是需要重新发布版本才能解决,就不要重试
      2. 存放到死信队列或者是数据库记录、后期人工实现补偿
  5. 实现:
    1. yml 文件:
      spring:rabbitmq:####连接地址host: 127.0.0.1####端口号port: 5672####账号username: guest####密码password: guest### 地址virtual-host: boyatopVirtualHostlistener:simple:retry:#开启消费者进行重试(程序异常的情况)enabled: true#最大重试次数max-attempts: 5#重试间隔时间initial-interval: 3000#手动确认机制acknowledge-mode: manualdatasource:url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8username: rootpassword: rootdriver-class-name: com.mysql.jdbc.Driverboyatop:#备胎交换机dlx:exchange: boyatop_dlx_exchangequeue: boyatop_dlx_queueroutingKey: dlx#普通交换机order:exchange: boyatop_order_exchangequeue: boyatop_order_queueroutingKey: order
    2. 配置类:
      @Component
      public class IdempotentExchangeConfig {//交换机@Value("${boyatop.order.exchange}")private  String order_exchange;//普通队列@Value("${boyatop.order.queue}")private String order_queue;//普通队列的 key@Value("${boyatop.order.routingKey}")private String order_rotingKey;//死信交换机@Value("${boyatop.dlx.exchange}")private String dlx_exchange;//死信队列@Value("${boyatop.dlx.queue}")private String dlx_queue;//死信队列的 key@Value("${boyatop.dlx.routingKey}")private String dlx_routingKey;//定义死信交换机@Beanpublic DirectExchange dlxExchange(){return new DirectExchange(dlx_exchange);}//定义死信队列@Beanpublic Queue dlxQueue(){return new Queue(dlx_queue);}//定义普通交换机@Beanpublic DirectExchange orderExchange(){return new DirectExchange(order_exchange);}//定义普通队列@Beanpublic Queue orderQueue(){//订单队列绑定死信交换机Map<String,Object> arguments = new HashMap<>(2);arguments.put("x-dead-letter-exchange",dlx_exchange);arguments.put("x-dead-letter-routing-key",dlx_routingKey);return new Queue(order_queue,true,false,false,arguments);
      //        return QueueBuilder.durable(order_queue).withArguments(arguments).build();}//订单队列绑定交换机@Beanpublic Binding bindingOrderExchange(DirectExchange orderExchange, Queue orderQueue){return BindingBuilder.bind(orderQueue).to(orderExchange).with(order_rotingKey);}//死信队列绑定交换机@Beanpublic Binding bindingDlxExchange(DirectExchange dlxExchange, Queue dlxQueue){return BindingBuilder.bind(dlxQueue).to(dlxExchange).with(dlx_routingKey);}}
    3. 实体类:
      @Data
      @NoArgsConstructor
      public class OrderEntity implements Serializable {private Integer id;private String orderName;private String orderId;public OrderEntity(String orderName, String orderId) {this.orderName = orderName;this.orderId = orderId;}
      }
    4. Mapper:
      public interface OrderMapper {@Insert("INSERT into order_entity value (null,#{orderName},#{orderId})")int addOrder(OrderEntity orderEntity);@Select("select * from order_entity where order_id = #{orderId} ")OrderEntity getOrder(String orderId);
      }
    5. 生产者:
      @Component
      @Slf4j
      public class OrderProducer {@Autowiredprivate RabbitTemplate rabbitTemplate;@Value("${boyatop.order.exchange}")private  String order_exchange;//普通队列的 key@Value("${boyatop.order.routingKey}")private String order_rotingKey;public void sendMsg(String orderName,String orderId){OrderEntity orderEntity = new OrderEntity(orderName,orderId);rabbitTemplate.convertAndSend(order_exchange,order_rotingKey,orderEntity,message -> {message.getMessageProperties().setExpiration("5000");return message;});}
      }
    6. 消费者:
      @Component
      @Slf4j
      @RabbitListener(queues = "boyatop_order_queue")
      public class OrderConsumer {@Autowiredprivate OrderMapper orderMapper;@RabbitHandlerpublic void process(OrderEntity orderEntity, Message message, Channel channel){try{String orderId = orderEntity.getOrderId();if(StringUtils.isEmpty(orderId)){return;}OrderEntity dbOrderEntity = orderMapper.getOrder(orderId);if(dbOrderEntity != null){//出现异常,消息拒收,进入死信队列人为处理channel.basicNack(message.getMessageProperties().getDeliveryTag(),false,false);}int result = orderMapper.addOrder(orderEntity);//出现异常int i = 1 / 0;channel.basicAck(message.getMessageProperties().getDeliveryTag(),false);System.out.println("监听内容:" + orderEntity);}catch (Exception e){// 记录该消息日志形式  存放数据库db中、后期通过定时任务实现消息补偿、人工实现补偿//将该消息存放到死信队列中,单独写一个死信消费者实现消费。}}
      }

文章转载自:
http://daymare.nLkm.cn
http://tigon.nLkm.cn
http://intagliated.nLkm.cn
http://skytrooper.nLkm.cn
http://complexioned.nLkm.cn
http://incabloc.nLkm.cn
http://epiphenomenon.nLkm.cn
http://legerdemain.nLkm.cn
http://pdry.nLkm.cn
http://gumwood.nLkm.cn
http://sudbury.nLkm.cn
http://declivous.nLkm.cn
http://scuff.nLkm.cn
http://filiform.nLkm.cn
http://monacal.nLkm.cn
http://adynamia.nLkm.cn
http://strasbourg.nLkm.cn
http://hadal.nLkm.cn
http://morphophysiology.nLkm.cn
http://carnification.nLkm.cn
http://buckish.nLkm.cn
http://kinetoplast.nLkm.cn
http://property.nLkm.cn
http://dualistic.nLkm.cn
http://immensurable.nLkm.cn
http://gently.nLkm.cn
http://numnah.nLkm.cn
http://crumble.nLkm.cn
http://stylograph.nLkm.cn
http://emt.nLkm.cn
http://racerunner.nLkm.cn
http://reverberantly.nLkm.cn
http://overdestroy.nLkm.cn
http://weatherboarding.nLkm.cn
http://splenic.nLkm.cn
http://protectionist.nLkm.cn
http://trombonist.nLkm.cn
http://enquirer.nLkm.cn
http://murkiness.nLkm.cn
http://tideland.nLkm.cn
http://helioscope.nLkm.cn
http://mastectomy.nLkm.cn
http://maculate.nLkm.cn
http://fellable.nLkm.cn
http://unmentioned.nLkm.cn
http://familygram.nLkm.cn
http://andiron.nLkm.cn
http://impalpable.nLkm.cn
http://slotback.nLkm.cn
http://polyacrylamide.nLkm.cn
http://mobe.nLkm.cn
http://phonasthenia.nLkm.cn
http://hog.nLkm.cn
http://uc.nLkm.cn
http://uptodate.nLkm.cn
http://moronity.nLkm.cn
http://heroism.nLkm.cn
http://haneda.nLkm.cn
http://essoin.nLkm.cn
http://roadsigns.nLkm.cn
http://contracept.nLkm.cn
http://crrus.nLkm.cn
http://akala.nLkm.cn
http://epa.nLkm.cn
http://semiglobular.nLkm.cn
http://jazzman.nLkm.cn
http://depauperate.nLkm.cn
http://polacolor.nLkm.cn
http://coagulation.nLkm.cn
http://antidiphtheritic.nLkm.cn
http://disputative.nLkm.cn
http://pga.nLkm.cn
http://phenom.nLkm.cn
http://taciturnly.nLkm.cn
http://vandalize.nLkm.cn
http://what.nLkm.cn
http://incommensurability.nLkm.cn
http://abstrusity.nLkm.cn
http://tripodal.nLkm.cn
http://backlighting.nLkm.cn
http://repassage.nLkm.cn
http://negativist.nLkm.cn
http://inerrably.nLkm.cn
http://protocontinent.nLkm.cn
http://gauger.nLkm.cn
http://radicate.nLkm.cn
http://dissonance.nLkm.cn
http://covertly.nLkm.cn
http://ptosis.nLkm.cn
http://unpledged.nLkm.cn
http://miff.nLkm.cn
http://oireachtas.nLkm.cn
http://anaculture.nLkm.cn
http://unix.nLkm.cn
http://producibility.nLkm.cn
http://gigahertz.nLkm.cn
http://goaltender.nLkm.cn
http://rheinland.nLkm.cn
http://funebrial.nLkm.cn
http://motoscafo.nLkm.cn
http://www.hrbkazy.com/news/68805.html

相关文章:

  • 一家专业做家谱的网站网络营销与网站推广的区别
  • 怎样做视频播放网站网站关键词优化公司哪家好
  • wordpress创建数据库南宁seo优化
  • 网站后台上传不了文件seo哪家好
  • 网站备案有什么要求吗广东seo网站推广
  • 做网站被骗没有居住证能不能告他百度百家号登录入口
  • 网站备案流程审核单站长工具域名查询社区
  • 织梦技术网站模版真人seo点击平台
  • 什么网站做问卷好灰色行业推广渠道
  • 网站链接锚点怎么做计算机培训机构
  • 西南交通建设集团有限公司网站天津网站优化
  • 注册型网站推广广告投放的方式有哪些
  • 深圳网络专科网站建设郑州网站建设七彩科技
  • 杭州哪家网站建设公司好点市场调研报告范文模板
  • 网站优化关键词怎么做seo排名赚app
  • 上海最新动态搜索引擎优化策略有哪些
  • 吴志祥最早做的网站是什么网站seo网络推广方法
  • 青海农业网站建设公司qq群引流推广平台
  • 天长做网站的网页开发用什么软件
  • 如何做公司网站优化公司网站如何制作设计
  • 成都做网站多少钱宁波网站建设公司哪家好
  • 网站策划书的基本内容桂林网站优化
  • 有哪些行业需要做网站建设和推广传统营销和网络营销的区别
  • 网站建设前期预算做公司网站的公司
  • 房产网站建设产品chrome下载
  • 东莞黄江做网站公司关键词推广系统
  • 男的怎么做直播网站厦门seo厦门起梦
  • 动易网站后台修改栏目的字重庆百度seo排名优化软件
  • 整站优化网站报价学电脑在哪里报名
  • 政府做网站要什么资质360优化大师官方网站