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

网站的投票 计数模块怎么做torrent种子搜索引擎

网站的投票 计数模块怎么做,torrent种子搜索引擎,长沙网站建设流程,phpcms手机网站怎么做面试题:你们是如何保证消息不丢失的? 1、什么是死信 死信就是消息在特定场景下的一种表现形式,这些场景包括: 1. 消息被拒绝访问,即消费者返回 basicNack 的信号时 或者拒绝basicReject 2. 消费者发生异常&#xff0…

面试题:你们是如何保证消息不丢失的?

1、什么是死信

死信就是消息在特定场景下的一种表现形式,这些场景包括:

1. 消息被拒绝访问,即消费者返回 basicNack 的信号时 或者拒绝basicReject

2. 消费者发生异常,超过重试次数 。 (其实spring框架调用的就是 basicNack

3. 消息的Expiration 过期时长或队列TTL过期时间。.ttl(20*1000) 进入的是 先进业务队列的数据.业务队列中先进入队列的信息会阻塞门口,不让过期的信息进入死信队列直到自己过期才放行,后期用rabbitmq的延时队列插件,实现同一个队列中有多个不同超时时间的消息,并按时间超时顺序出队

4. 消息队列达到最大容量 .maxLength(5).先进业务队列的消息由死信交换机进入死信队列

 述场景经常产生死信,即消息在这些场景中时,被称为死信

2、什么是死信队列

死信队列就是用于储存死信的消息队列,在死信队列中,有且只有死信构成,不会存在其余类型的消息。

死信队列在 RabbitMQ 中并不会单独存在,往往死信队列都会绑定这一个普通的业务消息队列,当所绑定的消息队列中,有消息变成死信了,那么这个消息就会重新被交换机路由到指定的死信队列中去,我们可以通过对这个死信队列进行监听,从而手动的去对这一消息进行补偿。 人工干预

 

 3、那么,我们到底如何来使用死信队列呢? 

只需要在声明业务队列的时候,绑定指定的死信交换机和RoutingKey即可。

死信交换机一般用直连交换机,将死信路由到指定的死信队列;业务则用广播交换机 

消息队列达到最大容量;队列TTL过期时间


@Configuration
public class OrderingOKConsumer {//死信交换机用直连@Beanpublic DirectExchange deadExchange() {return ExchangeBuilder.directExchange("ordering_ok_dlx").durable(true).build();}
//私信队列和正常没啥区别@Beanpublic Queue deadQueue() {return QueueBuilder.durable("ordering_ok_wms_dl").build();}
//死绑@Beanpublic Binding bindingDead() {return BindingBuilder.bind(deadQueue()).to(deadExchange()).with("ordering_ok_wms_dl");}
//业务交换机用广播@Beanpublic FanoutExchange exchange5() {return ExchangeBuilder.fanoutExchange("ordering_ok").durable(true).build();}
//业务队列,要和死信交换机和队列绑定@Beanpublic Queue queue5() {return QueueBuilder.durable("ordering_ok_wms").maxLength(3).deadLetterExchange("ordering_ok_dlx").deadLetterRoutingKey("ordering_ok_wms_dl").ttl(10000)//设置队列过期时间.build();}@Beanpublic Binding binding5() {return BindingBuilder.bind(queue5()).to(exchange5());}//@RabbitListener(queues = "ordering_ok_wms")public void consumer(OrderingOk msg) {System.out.println("ordering_ok_wms收到消息:" + msg);int i = 1 / 0;}
}

 消息的Expiration 过期时长

@Service
public class OrderingOkProvider {@Autowiredprivate RabbitTemplate rabbitTemplate;public void send(OrderingOk msg) {rabbitTemplate.convertAndSend("ordering_ok","",msg,message -> {Long id=msg.getId();int expire = 0;switch (id.intValue()){case 1:expire = 50*1000;break;case 2:expire = 40*1000;break;case 3:expire = 30*1000;break;case 4:expire = 20*1000;break;case 5:expire = 10*1000;break;}// message.getMessageProperties().setExpiration(expire+"");return message;});}
}

4. 自动应答死信配置

#-------------MQ 高级配置---------

#预抓取数量

spring.rabbitmq.listener.simple.prefetch=250

#设置消费者手动应答模式

spring.rabbitmq.listener.simple.acknowledge-mode = auto

#开启自动应答重试机制

spring.rabbitmq.listener.simple.retry.enabled=true

#默认重试3次

spring.rabbitmq.listener.simple.retry.max-attempts=3

#重试间隔时间 单位ms

spring.rabbitmq.listener.simple.retry.initial-interval=1000ms

#时间间隔倍数,默认是1倍

spring.rabbitmq.listener.simple.retry.multiplier=2

#最大间隔时间

spring.rabbitmq.listener.simple.retry.max-interval=5000ms

http://www.hkea.cn/news/392822/

相关文章:

  • 石家庄做网络推广的网站推广平台收费标准
  • 贵阳天柱网站建设招聘域名注册平台有哪些
  • 网站建设电话营销百度问一问官网
  • 网站优化建设河南怎么关闭seo综合查询
  • 自贡做响应式网站开发公司google搜索引擎入口google
  • 东莞哪种网站推广好微信朋友圈推广文案
  • 现在学做网站赚钱吗东莞市优速网络科技有限公司
  • 宁津做网站公司宣传推广图片
  • 陕西的建设厅官方网站数据分析报告
  • 企业网站建设的定位互联网
  • 注册域名之后如何做网站优化清理大师
  • wordpress+在线播放推广seo网站
  • 丽水网站建设明恩玉杰网站开发框架
  • 如何设计网站中的上传功能搜索引擎技术基础
  • 余江区建设局网站百度搜索引擎优化的方法
  • 做网站用c 还是java万网域名注册教程
  • 青岛做网站那家好专业的网站优化公司排名
  • 网站如何做淘宝推广seo服务 收费
  • 学完js了可以做哪些网站营业推广的形式包括
  • 网站会员系统怎么做模版seo是指什么职位
  • 上海集团网站制作新闻 近期大事件
  • 商城网站验收标准seo关键词排名优化怎样收费
  • 睢宁做网站公司珠海百度关键字优化
  • 临安市住房和建设局网站伊春seo
  • 天津百度做网站多少钱游戏代理平台哪个好
  • b2b模式的网站google网站
  • 做优化网站哪个公司好十大营销策略
  • 软件商店app苏州网站关键词优化推广
  • wordpress添加日历首页优化公司
  • 日本可以自己做网站吗查询网站服务器