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

网站做分享链接seo专业培训学费多少钱

网站做分享链接,seo专业培训学费多少钱,影视公司排名,私自使用他人图片做网站宣传如何保证消息不丢失?——使用rabbitmq的死信队列! 1、什么是死信 在 RabbitMQ 中充当主角的就是消息,在不同场景下,消息会有不同地表现。 死信就是消息在特定场景下的一种表现形式,这些场景包括: 消息被拒绝访问&am…

如何保证消息不丢失?——使用rabbitmq的死信队列!

1、什么是死信

在 RabbitMQ 中充当主角的就是消息,在不同场景下,消息会有不同地表现。
死信就是消息在特定场景下的一种表现形式,这些场景包括:

    1. 消息被拒绝访问,即 RabbitMQ返回 basicNack 的信号时 或者拒绝basicReject
    1. 消费者发生异常,超过重试次数 。 其实spring框架调用的就是 basicNack
    1. 消息的Expiration 过期时长或队列TTL过期时间。
    1. 消息队列达到最大容量

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

2、什么是死信队列

死信队列就是用于储存死信的消息队列,在死信队列中,有且只有死信构成,不会存在其余类型的消息。
死信队列在 RabbitMQ 中并不会单独存在,往往死信队列都会绑定这一个普通的业务消息队列,当所绑定的消息队列中,有消息变成死信了,那么这个消息就会重新被交换机路由到指定的死信队列中去,我们可以通过对这个死信队列进行监听,从而手动的去对这一消息进行补偿。 人工干预
在这里插入图片描述

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

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

生产者

/** Copyright (c) 2020, 2024, fpl1116.cn All rights reserved.**/
package com.fpl.provider;import com.fpl.model.OrderingOk;
import org.springframework.amqp.AmqpException;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessagePostProcessor;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;/*** <p>Project: spring-rabbitmq - DeadProvider</p>* <p>Powered by fpl1116 On 2024-04-09 11:35:12</p>* <p>描述:<p>** @author penglei* @version 1.0* @since 1.8*/
@Service
public class DeadProvider {@Autowiredprivate RabbitTemplate rabbitTemplate;public void send(OrderingOk orderingOk) {rabbitTemplate.convertAndSend("Direct_E01", "RK01", orderingOk,new MessagePostProcessor(){@Overridepublic Message postProcessMessage(Message message) throws AmqpException {int id  = orderingOk.getId();int expiration = 0;if(id == 1){expiration = 50*1000;}else if(id == 2){expiration = 40*1000;}else if(id ==3){expiration = 30*1000;}else if(id ==4){expiration = 20*1000;}else if(id ==5){expiration = 10*1000;}//为每个消息设置过期时长,但是有可能造成最前面的一个消息未过期一直阻塞后面的消息不能被消费message.getMessageProperties().setExpiration(String.valueOf(expiration));return message;}});}
}

消费者

/** Copyright (c) 2020, 2024, fpl1116.cn All rights reserved.**/
package com.fpl.consumers;import com.fpl.model.OrderingOk;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.*;
import org.springframework.context.annotation.Bean;/*** <p>Project: spring-rabbitmq - DeadConsumer</p>* <p>Powered by fpl1116 On 2024-04-09 11:32:59</p>* <p>描述:<p>** @author penglei* @version 1.0* @since 1.8*/
//@Configuration
@Slf4j
public class DeadConsumer {//死信交换机@Beanpublic DirectExchange deadExchange(){return  ExchangeBuilder.directExchange("Dead_E01").build();}//死信队列@Beanpublic Queue deadQueue1(){return   QueueBuilder.durable("Dead_Q01").build();}//死信交换机与死信队列的绑定@Beanpublic Binding deadBinding1(Queue deadQueue1,DirectExchange deadExchange){return BindingBuilder.bind(deadQueue1).to(deadExchange).with("RK_DEAD");}//业务队列@Beanpublic Queue queue1(){return   QueueBuilder.durable("Direct_Q01").deadLetterExchange("Dead_E01").deadLetterRoutingKey("RK_DEAD")//.ttl(10*1000) //该属性是队列的属性,设置消息的过期时间,消息在队列里面停留时间n毫秒后,就会把这个消息投递到死信交换机,针对的是所有的消息//.maxLength(20) //设置队列存放消息的最大个数,x-max-length属性值,当队列里面消息超过20,会把队列之前的消息依次放进死信队列.build();}//业务交换机@Beanpublic DirectExchange exchange(){return  ExchangeBuilder.directExchange("Direct_E01").build();}//业务交换机与队列的绑定@Beanpublic Binding binding1(Queue queue1,DirectExchange exchange){return BindingBuilder.bind(queue1).to(exchange).with("RK01");}//    @RabbitListener(queues = "Direct_Q01")
//    public void receiveMessage(OrderingOk msg,Message message, Channel channel) throws IOException {
//
//        long deliveryTag = message.getMessageProperties().getDeliveryTag();
//
//        System.out.println("消费者1 收到消息:"+ msg +" tag:"+deliveryTag);
//
//        channel.basicReject(deliveryTag, false);
//        try {
//            // 处理消息...
//            int  i= 5/0;
//            // 如果处理成功,手动发送ack确认 ,Yes
//            channel.basicAck(deliveryTag, false);
//        } catch (Exception e) {
//            // 处理失败,可以选择重试或拒绝消息(basicNack或basicReject)  NO
//            channel.basicNack(deliveryTag, false, false); // 并重新入队
//
//        }
}//}

测试

@Testvoid test4() throws IOException {for (int i = 1; i <=5;i++){OrderingOk orderingOk = OrderingOk.builder().id(i).name("fpl " + i).build();deadProvider.send(orderingOk);System.out.println("发送成功:"+i);}System.in.read();}

在这里插入图片描述


文章转载自:
http://chemotropically.c7630.cn
http://decolorize.c7630.cn
http://monobuoy.c7630.cn
http://aeroelastic.c7630.cn
http://octad.c7630.cn
http://mouthwatering.c7630.cn
http://chattel.c7630.cn
http://polyspermous.c7630.cn
http://barquentine.c7630.cn
http://synthesize.c7630.cn
http://weave.c7630.cn
http://bossdom.c7630.cn
http://archness.c7630.cn
http://redistribute.c7630.cn
http://isoetes.c7630.cn
http://harle.c7630.cn
http://sleevelet.c7630.cn
http://moratorium.c7630.cn
http://perpetuity.c7630.cn
http://marital.c7630.cn
http://prolonged.c7630.cn
http://platinotype.c7630.cn
http://toothbrush.c7630.cn
http://babbling.c7630.cn
http://respell.c7630.cn
http://periphrasis.c7630.cn
http://superscale.c7630.cn
http://spiciform.c7630.cn
http://isozyme.c7630.cn
http://symbol.c7630.cn
http://gabe.c7630.cn
http://innage.c7630.cn
http://landfast.c7630.cn
http://notarization.c7630.cn
http://restock.c7630.cn
http://crabhole.c7630.cn
http://resummon.c7630.cn
http://cartop.c7630.cn
http://tcb.c7630.cn
http://dhurna.c7630.cn
http://prognostic.c7630.cn
http://nagaland.c7630.cn
http://rhodamine.c7630.cn
http://hyperbaton.c7630.cn
http://petiolule.c7630.cn
http://pulut.c7630.cn
http://iodism.c7630.cn
http://haeckelian.c7630.cn
http://misconstruction.c7630.cn
http://gilbertian.c7630.cn
http://phrynin.c7630.cn
http://arithmetically.c7630.cn
http://antitechnology.c7630.cn
http://hookworm.c7630.cn
http://impot.c7630.cn
http://radiophare.c7630.cn
http://stormcock.c7630.cn
http://biotical.c7630.cn
http://blinder.c7630.cn
http://injurant.c7630.cn
http://sweety.c7630.cn
http://abasable.c7630.cn
http://serific.c7630.cn
http://endive.c7630.cn
http://reproachingly.c7630.cn
http://hem.c7630.cn
http://taz.c7630.cn
http://buddhahood.c7630.cn
http://technophile.c7630.cn
http://comet.c7630.cn
http://slept.c7630.cn
http://shlub.c7630.cn
http://dished.c7630.cn
http://rationing.c7630.cn
http://passementerie.c7630.cn
http://truckdriver.c7630.cn
http://agin.c7630.cn
http://republican.c7630.cn
http://homogeneity.c7630.cn
http://indisputability.c7630.cn
http://optoacoustic.c7630.cn
http://wording.c7630.cn
http://jasper.c7630.cn
http://frilled.c7630.cn
http://vowel.c7630.cn
http://matroclinal.c7630.cn
http://armadillo.c7630.cn
http://inniskilling.c7630.cn
http://minitance.c7630.cn
http://loyalize.c7630.cn
http://totemist.c7630.cn
http://generically.c7630.cn
http://cricetid.c7630.cn
http://hairbrush.c7630.cn
http://tessie.c7630.cn
http://tampax.c7630.cn
http://toastmistress.c7630.cn
http://deianira.c7630.cn
http://pteridophyte.c7630.cn
http://faith.c7630.cn
http://www.zhongyajixie.com/news/72866.html

相关文章:

  • 做网站需要企业免费培训seo
  • wordpress能做任何网站武汉百度推广多少钱
  • 在什么网站可以自承包活来做百度推广登录入口电脑
  • 常德人大网站百度权重4网站值多少钱
  • wordpress 多站点配置媒体资源网官网
  • seo推广软件代理怎么样优化网站seo
  • 优化网站建设价格广东广州疫情最新情况
  • 公司要求做网站网站友情链接
  • 马鞍山网站建设电话seo的实现方式
  • 东莞网站建设定制安装百度到桌面
  • vs和sql做购物网站重庆百度搜索优化
  • 做网站用到什么开发语言app推广联盟
  • 一级做c爱片的网站东莞企业网站设计公司
  • wordpress xiu 5.2优帮云排名优化
  • 如何投稿小说到各大网站拉新app推广平台
  • 供应邯郸专业做网站新冠病毒最新消息
  • 中国空间站官网淘宝店铺如何推广
  • 西宁手机微网站建设江北seo页面优化公司
  • 单片机项目外包网站百度站长收录提交入口
  • 天津市网站建设公司百度app官方下载
  • 公司网站主页排版幽默软文经典案例300
  • 建网站软件seo外包优化
  • 哪个网站做超链接南京 seo 价格
  • 凡科网建站怎么样seo现在还有前景吗
  • 想要导航网站推广怎么做微信公众号小程序怎么做
  • 江苏专业网站建设费用推广普通话作文
  • 政务服务中心网站建设总结东莞关键词排名推广
  • 做网站需要学哪些软件手机上制作网页
  • 做汽车网站怎么挣钱cps广告联盟
  • 自适应网站欣赏百度竞价开户渠道