RabbitMQ面包店营业笔记——第四天

昨天从win换到mac。。配来配去的就拖更了。

也就停止营业了一天

那今天

我胡汉三又回来了

我们上次说到面包保质期以及面包坏了丢到哪

那我们今天来解决一下

总所周知,保质期是商家说了算

那我就有两个选择:

一、我所有面包都是同一个保质期(统一设置队列中消息的过期时间)

二、不同的产品保质期不同(设置指定消息的过期时间)

我们在RabbitMQ中把这个保质期叫做TTL(Time to Live)

那么我们先瞅瞅不同保质期的做法:


@RestController
public class Producer {
    @Autowired
    private RabbitTemplate template;

    @GetMapping("/makeLover")
    public String makeLover() {
        for (int i = 0; i < 50; i++) {
            String msg = "send msg = " + I;
            try {
                //每发一条消息睡一会会
                Thread.sleep(i * 10);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

            template.convertAndSend(AppConfig.EXCHANGE_NAME, AppConfig.ROUTING_KEY, msg,message -> {message.getMessageProperties().setExpiration("3000");return message;});
          //这里设置保质期是三秒
        }
        return "OK";
    }
}

由于只有三秒…但是我的手速还不够这么快的点到(没办法,有对象,手速自然就下来了)

所以这里无图,观众老爷可以自己在rabbitmq的管理页面看到哦~

然后让我们康康全部设置咋设置:

 @Bean
    public Queue queue() {
        Map map = new HashMap();
        map.put("x-message-ttl", 30000);

        return new Queue(QUEUE_NAME, true, false, false, map);
    }
image-20200328145239470.png

那我这里设置的是30秒

在这里有个问题,在我们这个queue已经创建出来之后,我们需要先删掉原有的queue,不然会报错。。。

那我们的保质期到此为止了

然后我们还得考虑一下,如果面包到了保质期的话,我们应该丢在一个地方

所以我们就有了死信队列:

死信队列介绍
  • 死信队列:DLX,dead-letter-exchange
  • 利用DLX,当消息在一个队列中变成死信 (dead message)之后,它能被重新publish到另一个Exchange,这个Exchange就是DLX
消息变成死信有以下几种情况
  • 消息被拒绝(basic.reject / basic.nack),并且requeue = false
  • 消息TTL过期
  • 队列达到最大长度
死信处理过程
  • DLX也是一个正常的Exchange,和一般的Exchange没有区别,它能在任何的队列上被指定,实际上就是设置某个队列的属性。
  • 当这个队列中有死信时,RabbitMQ就会自动的将这个消息重新发布到设置的Exchange上去,进而被路由到另一个队列。
  • 可以监听这个队列中的消息做相应的处理。

那可以知道的就是

消息-》交换机-〉队列-》消息失效-〉死信交换机-》死信路由-》死信队列-〉消费者消费

那试试:

 @Bean
    public Queue queue() {
        Map map = new HashMap();
        map.put("x-message-ttl", 30000);
        //声明私信交换机
        map.put("x-dead-letter-exchange", "dlx.exchange");
        //声明私信路由
        map.put("x-dead-letter-routing-key", "dlx.key");

        return new Queue(QUEUE_NAME, true, false, false, map);
    }
    
   @Bean
    public Queue deadQueue(){
        Queue queue = new Queue("dead", true);
        return queue;
    }

    @Bean
    public Binding deadLetterBindding(){
        return BindingBuilder.bind(deadQueue()).to(deadLetterExchange()).with("dlx.key");
    }


    @Bean
    public DirectExchange deadLetterExchange() {
        DirectExchange topicExchange = new DirectExchange("dlx.exchange", true, false);
        return topicExchange;
    }

我们康康结果

image-20200328153342772.png
image-20200328153356463.png

很明显,我们的普通队列已经可以发送消息到dlx了

那么等到消息失效,就可以直接进入私信队列了。

OK。RabbitMQ的事情就先暂且告一段落~

后续还会更新,至于更新什么。

还没想好~

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,367评论 6 512
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,959评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,750评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,226评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,252评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,975评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,592评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,497评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,027评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,147评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,274评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,953评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,623评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,143评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,260评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,607评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,271评论 2 358

推荐阅读更多精彩内容

  • RabbitMQ的学习笔记 关于RabbitMQ的几个角色如下: 关于名词的通俗解析: 首先我们肯定知道Rabbi...
    ChinaXieShuai阅读 1,455评论 0 2
  • 一般的指针或者引用不支持类型转换,如下图所示: 但是父类的指针或者引用可以指向子类对象,换句话说就是把子类类型转换...
    Stroman阅读 3,902评论 3 0
  • 2019年8月3日 星期六 天气:晴 假期时间,小众城市成了不少人的选择,很多人推荐了一些城市:重庆、成都、昆明…...
    杉水Daisy阅读 590评论 0 51
  • 第一次背井离乡后的归乡,情感难免会有些啰嗦,啰嗦到我执意要写一篇流水账。 列车15点20从深圳出发。上车前,小伙伴...
    余先飞阅读 627评论 0 0
  • 我学会了写作,用作文本和笔,用手用心。我多么想写啊,写很多很多的作文....我妈妈写了一篇作文题目是;《我爱你...
    麦田袁敬博阅读 65评论 0 0