开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

rabbit mq 加了这参数 x-message-ttl flink就链接失败是啥原因

rabbit mq 加了这参数 x-message-ttl flink就链接失败是啥原因 有用rabbitmq的没

展开
收起
圆葱猪肉包 2023-03-27 14:10:51 288 0
1 条回答
写回答
取消 提交回答
  • 天下风云出我辈,一入江湖岁月催,皇图霸业谈笑中,不胜人生一场醉。

    TTL 全称 Time To Live(存活时间/过期时间)。

    当消息到达存活时间后,还没有被消费,会被自动清除。

    RabbitMQ可以对消息设置过期时间,也可以对整个队列(Queue)设置过期时间。 在这里插入图片描述

    /**** ttl:过期时间* 1 队列统一过期* 2 消息单独过期** 如果设置消息的过期时间,也设置了队列的过期时间,它以时间短的为准* 队列过期后,会将队列所有消息全部移除* 消息过期后,只有消息在队列顶端,才会去判断其是否过期(移除掉)*/ @Test public void testTLL() throws InterruptedException {队列统一过期//for (int i = 0; i <10 ; i++) {// //3. 发送消息// rabbitTemplate.convertAndSend("test_exchange_ttl", "ttl.hehe", "message tll....");// //Thread.sleep(200);//}///消息后处理对象,设置一些消息的参数信息MessagePostProcessor messagePostProcessor = new MessagePostProcessor() {@Overridepublic Message postProcessMessage(Message message) throws AmqpException {//1 设置message的信息message.getMessageProperties().setExpiration("5000");//消息的过期时间//2 返回该信息return message;}};///消息单独过期//rabbitTemplate.convertAndSend("test_exchange_ttl", "ttl.hehe", "message tll....", messagePostProcessor);for (int i = 0; i < 10; i++) {if(i==5){rabbitTemplate.convertAndSend("test_exchange_ttl", "ttl.hehe", "message tll....", messagePostProcessor);}else{//不过期消息rabbitTemplate.convertAndSend("test_exchange_ttl", "ttl.hehe", "message tll....");}}}

    设置队列过期时间使用参数:x-message-ttl,单位:ms(毫秒),会对整个队列消息统一过期。

    设置消息过期时间使用参数:expiration。单位:ms(毫秒),当该消息在队列头部时(消费时),会单独判断这一消息是否过期。

    如果两者都进行了设置,以时间短的为准。

    2023-03-27 14:37:37
    赞同 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关产品

  • 实时计算 Flink版
  • 相关电子书

    更多
    Flink CDC Meetup PPT - 龚中强 立即下载
    Flink CDC Meetup PPT - 王赫 立即下载
    Flink CDC Meetup PPT - 覃立辉 立即下载