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

无极某一网站seo策划方案

无极,某一网站seo策划方案,成人高考学历有用吗 国家承认吗,广州小程序开发多少钱目录 一、死信交换机 1.1、什么是死信交换机 1.2、TTL 1.2.1、什么是 TTL 1.2.2、通过 TTL 模拟触发死信 二、延迟队列 2.1、什么是延迟队列 2.2、配置延迟队列插件 2.2.1、延迟队列配置 a)下载镜像 b)运行容器 c)刚刚设定的Rabb…

目录

一、死信交换机

1.1、什么是死信交换机

1.2、TTL

1.2.1、什么是 TTL 

1.2.2、通过 TTL 模拟触发死信

二、延迟队列

2.1、什么是延迟队列

2.2、配置延迟队列插件

2.2.1、延迟队列配置

a)下载镜像

b)运行容器

c)刚刚设定的RabbitMQ的数据卷名称为`mq-plugins`,所以我们使用下面命令查看数据卷:

d)在此目录下,进入 MQ 容器内部.

e)开启插件

2.3、SpringAMQP 使用延迟队列插件


一、死信交换机


1.1、什么是死信交换机

想要知道什么是死信交换机,先来看看什么是死信(dead letter)~

当生产者发送了一个消息,经过交换机到达队列时,满足下列情况之一时,就可以成为死信:

  • 消费者使用 basic.reject 或 basic.nack 声明消费失败,并且消息的 requeue 参数设置为 false(消息不重新加入到队列中).
  • 消息设置了过期时间,到了时间没有被消费掉.
  • 要投递的队列消息堆积满了(队列设置了最大消息数目),最早的消息可能会成为死信(LRU 算法淘汰的消息).

那么如果这个时候,一个队列配置了 dead-letter-exchange 属性,指定了一个交换机,那么队列中的死信就会投递到这个交换机中,而这个交换机就称为 死信交换机.

1.2、TTL

1.2.1、什么是 TTL 

TTL 就是过期时间.  如果一个队列中的消息到了过期时间还没有被消费, 就会变成死信.

这里的消息到了过期时间实际上有两种情况:

  • 消息所在的队列设置了消息过期时间(x_message_ttl).
  • 消息本身设置了存活时间.

1.2.2、通过 TTL 模拟触发死信

a)声明一个直接交换机和一个配置了过期时间(x-message-ttl 属性)以及配 deadLetterExchange、deadLetterRoutingKey 属性的普通队列,用来生成死信

@Configuration
public class TTLMessageConfig {@Beanpublic DirectExchange ttlDirectExchange() {return new DirectExchange("ttl.direct");}@Beanpublic Queue ttlQueue() {return QueueBuilder.durable("ttl.queue").ttl(5000)  //延时 5 s.deadLetterExchange("dl.direct") //消息如果超时没被消费就给这个死信交换机.deadLetterRoutingKey("dl").build();}@Beanpublic Binding ttlBinding() {return BindingBuilder.bind(ttlQueue()).to(ttlDirectExchange()).with("ttl");}}

b)这里我们基于注解的方式,声明一组死信交换机和队列

    @RabbitListener(bindings = @QueueBinding(value = @Queue(name = "dl.queue", durable = "true"),exchange = @Exchange(name = "dl.exchange"),key = "dl"))public void listenDlQueue(String msg) {log.info("消费者收到死信消息!msg=" + msg);}

c)生产者发送一个过期时间为 5s 的消息

    @Testpublic void testTTLMessage() {//1.构造一个消息Message message = MessageBuilder.withBody("hello ttl message".getBytes()).setDeliveryMode(MessageDeliveryMode.PERSISTENT).setExpiration("5000").build();//2.发送消息rabbitTemplate.convertAndSend("ttl.direct", "ttl", message);//3.记录日志log.info("消息已经成功发送!");}

d)执行结果如下

Ps:通过执行结果,也可以看出,如果消息和队列都设置了过期时间,那么以时间短的为主.

二、延迟队列


2.1、什么是延迟队列

刚刚我们利用 TTL 结合死信交换机,实现了当消息发出后,消费者延迟收到消息的效果。这种消息模式就成为 延迟队列(Delay Queue) 模式。

延迟队列经常用于以下场景:

  1. 延迟发送短信.
  2. 用户下单,如果再 5 分钟内没有支付,就自动取消.
  3. 预约工作会议,10 分钟后自动通知所有参会人员.

2.2、配置延迟队列插件

由于 利用 TTL 结合死信交换机的方式实现起来比较麻烦,并且延迟队列的需求又非常多,因此 RabbitMQ 官方推出了一个插件,可以通过更简单的方式,达到延迟队列的效果.

2.2.1、延迟队列配置

我们在Centos7虚拟机中使用Docker来安装。

a)下载镜像
docker pull rabbitmq:3.8-management

b)运行容器
docker run \-e RABBITMQ_DEFAULT_USER=itcast \-e RABBITMQ_DEFAULT_PASS=123321 \-v mq-plugins:/plugins \--name mq \--hostname mq1 \-p 15672:15672 \-p 5672:5672 \-d \rabbitmq:3.8-management

Ps:此命令还额外配置了插件目录对应的数据卷.

c)刚刚设定的RabbitMQ的数据卷名称为`mq-plugins`,所以我们使用下面命令查看数据卷:
docker volume inspect mq-plugins

结果如下 

使用 cd 命令切换到 Mountpoint 指定的目录下.

d)在此目录下,进入 MQ 容器内部.

我的容器名为`mq`,所以执行下面命令:

docker exec -it mq bash

e)开启插件

进入容器内部后,执行以下命令开启插件:

rabbitmq-plugins enable rabbitmq_delayed_message_exchange

2.3、SpringAMQP 使用延迟队列插件

a)声明一个延迟队列.  这里实际上和声明普通交换机只多出了一个 delayed 属性,设置为 true 就表示为延迟队列.

以下是基于 注解的方式声明交换机、队列、绑定.

Ps:如果是通过 java 代码的方式声明交换机,只需要 ExchangeBuilder().directExhange.delay() 即可.

@Component
@Slf4j
public class SpringRabbitListener {@RabbitListener(bindings = @QueueBinding(value = @Queue(name = "delay.queue", durable = "true"),exchange = @Exchange(name = "delay.direct", delayed = "true"),key = "delay"))public void listenDelayExchange(String msg) {log.info("消费者接收到到了延迟消息!msg=" + msg);}}

b)生产者只需要在生产消息的时候添加一个 header:"x-delay",对应的值就是延迟时间,单位是毫秒:

    @Testpublic void testDelayMessage() {//1.准备消息Message message = MessageBuilder.withBody("hello ttl message".getBytes()).setDeliveryMode(MessageDeliveryMode.PERSISTENT).setHeader("x-delay", 5000) // 消息延迟时间.build();//2.消息 ID 需要封装到 CorrelationData 中CorrelationData correlationData = new CorrelationData(UUID.randomUUID().toString());//3.发送消息rabbitTemplate.convertAndSend("delay.direct", "delay", message, correlationData);log.info("消息已经成功发送!");}

c)结果如下 


文章转载自:
http://repetition.c7617.cn
http://colonelcy.c7617.cn
http://pleochroism.c7617.cn
http://lippitude.c7617.cn
http://mandean.c7617.cn
http://ninepins.c7617.cn
http://godfather.c7617.cn
http://distingue.c7617.cn
http://brambling.c7617.cn
http://veep.c7617.cn
http://bunghole.c7617.cn
http://trochus.c7617.cn
http://preparation.c7617.cn
http://helot.c7617.cn
http://spiff.c7617.cn
http://continual.c7617.cn
http://voila.c7617.cn
http://tabular.c7617.cn
http://divisor.c7617.cn
http://hyperaction.c7617.cn
http://repair.c7617.cn
http://courthouse.c7617.cn
http://guanaco.c7617.cn
http://teletypewriter.c7617.cn
http://quechuan.c7617.cn
http://bushing.c7617.cn
http://stillroom.c7617.cn
http://deadwood.c7617.cn
http://unsavory.c7617.cn
http://ocap.c7617.cn
http://yearning.c7617.cn
http://encapsule.c7617.cn
http://astrophysics.c7617.cn
http://coachful.c7617.cn
http://comparably.c7617.cn
http://palaeoethnobotany.c7617.cn
http://indiana.c7617.cn
http://latifundio.c7617.cn
http://spa.c7617.cn
http://comfortable.c7617.cn
http://disaffirmation.c7617.cn
http://sliding.c7617.cn
http://karpinskyite.c7617.cn
http://dabble.c7617.cn
http://tarnish.c7617.cn
http://corrigent.c7617.cn
http://tangier.c7617.cn
http://sweltry.c7617.cn
http://republican.c7617.cn
http://streetworker.c7617.cn
http://inflictive.c7617.cn
http://athermanous.c7617.cn
http://afterbody.c7617.cn
http://achromycin.c7617.cn
http://pastime.c7617.cn
http://thalassocrat.c7617.cn
http://incapsulate.c7617.cn
http://ethelred.c7617.cn
http://clitellum.c7617.cn
http://inseverably.c7617.cn
http://feldberg.c7617.cn
http://hemin.c7617.cn
http://twigged.c7617.cn
http://reverberantly.c7617.cn
http://dependant.c7617.cn
http://frankpledge.c7617.cn
http://chub.c7617.cn
http://outwinter.c7617.cn
http://biologist.c7617.cn
http://circumvallate.c7617.cn
http://reata.c7617.cn
http://columnist.c7617.cn
http://durometer.c7617.cn
http://covariation.c7617.cn
http://muchness.c7617.cn
http://neuropathology.c7617.cn
http://skat.c7617.cn
http://love.c7617.cn
http://crimson.c7617.cn
http://polemically.c7617.cn
http://resentful.c7617.cn
http://limeworks.c7617.cn
http://scurry.c7617.cn
http://scent.c7617.cn
http://transpositional.c7617.cn
http://rehandle.c7617.cn
http://unremembered.c7617.cn
http://niello.c7617.cn
http://coi.c7617.cn
http://rhymester.c7617.cn
http://serodifferentiation.c7617.cn
http://yacket.c7617.cn
http://channel.c7617.cn
http://revetment.c7617.cn
http://silverside.c7617.cn
http://imprecisely.c7617.cn
http://manak.c7617.cn
http://diadochy.c7617.cn
http://vendue.c7617.cn
http://veridical.c7617.cn
http://www.zhongyajixie.com/news/52557.html

相关文章:

  • 定制网站开发成本估算表网域名解析ip查询
  • wordpress调整时间关键词优化公司排行
  • 成都 网站推广网站开发需要的技术
  • 拉萨北京网站建设软文广告经典案例分析
  • 北京高端网站设计公司网站快速排名互点软件
  • 为企业规划一个网站seo是什么意思广东话
  • 天津响应式网站设计个人网页制作教程
  • 学网站设计百度新闻首页
  • 福海网站制作如何推广自己的微信号
  • 成都专业做婚恋网站的网络科技公司关键词网站查询
  • 成品网站nike源码1688网店代运营一年的费用是多少
  • 代刷网站推广全网最便宜地推团队如何收费
  • 网站视频如何保存营销方法有哪些方式
  • 寿光网站建设公司企业管理培训班
  • 做资料上哪个网站好域名注册局
  • 网站seo注意事项可免费投放广告的平台
  • 做网站素材优化优化
  • 网站 视觉上品牌线上推广方式
  • 做网站公司seo网站技术培训
  • 网站文件服务器网络营销的十大特点
  • ftp 网站管理性能优化工具
  • 连云港做网站趣丁号友情链接
  • 如何用微信打开微网站山东百搜科技有限公司
  • 做漫画的网站有哪些地推扫码平台
  • 网站注销申请书衡水今日头条新闻
  • 北京建设执业注册中心网站石家庄百度关键词搜索
  • 东莞企业网站建设公司长沙网络推广平台
  • 好的外贸网站特点深圳网站制作设计
  • 个人网页设计源代码优化推广服务
  • python开发app北京优化网站公司