延迟消息

作者: 念䋛 | 来源:发表于2021-06-21 18:04 被阅读0次

延迟消息
延迟消息主要针对生产者
延时队列的延时延时时间分为18个级别
messageDelayLevel=1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h

public static void main(String[] args) throws MQClientException, InterruptedException {
        //定义生产者, 生产者和消费者的group没有任何联系,生产者group是生产者集群,
        DefaultMQProducer producer = new DefaultMQProducer ("please_rename_unique_group_name");
        //生产者和消费者都是与nameserver连接,因为nameserver中维护了所有broker信息,包括topic和队列
        producer.setNamesrvAddr ("192.168.44.145:9876");
        //设置发送消息超时,默认为3秒,单位毫秒
        producer.setSendMsgTimeout (1000);
        //异步发送消息,重试次数,默认为2次
//        producer.setRetryTimesWhenSendAsyncFailed (3);
        //同步发送
        producer.setRetryTimesWhenSendFailed (5);
        //开启生产者
        producer.start ();
        for (int i = 0; i < 2; i++) {
            try {
                /**
                 * 第一个参数为topic
                 * 第二个参数tag,用与消费者过滤消息用,这种过滤发生在broker,而不是在消费者过滤,这样节省了带宽
                 * 第三个参数消息体
                 * message有构造函数中还有key,这个对消费者没有实际意义,是在查找message时可以快速查找
                 */
                Message msg = new Message ("TopicTest", "TagA" , ("Hello RocketMQ " + i).getBytes (RemotingHelper.DEFAULT_CHARSET) /* Message body */
                );
                //延时消息,开源版本只能定义下面的时间,不能自定义
                //messageDelayLevel=1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h
                //3级别为10s,就是10s后消息放到队列中
                msg.setDelayTimeLevel(3);
                //这种方式为同步发送,消息发送到broker并收到了broker返回的消息,线程到这是阻塞的,保证了消息的可靠性
                //消息发送,发送失败重试间隔
                SendResult sendResult = producer.send (msg,1000);
                System.out.printf ("%s%n", sendResult);
            } catch (Exception e) {
                e.printStackTrace ();
                Thread.sleep (1000);
            }
        }
        //关闭生产者
        producer.shutdown ();
    }

相关文章

  • 延迟消息

    https://www.jianshu.com/p/ee19a3d207fc[https://www.jiansh...

  • 延迟消息

    延迟消息延迟消息主要针对生产者延时队列的延时延时时间分为18个级别messageDelayLevel=1s 5s ...

  • Spring Cloud Stream 进阶配置——使用延迟队列

    ps: 本文所有代码可在 这里 查看。 延迟队列 延迟队列 操作的对象是延迟消息,所谓 “延迟消息” 是指当消息被...

  • 10.延迟队列

    文章参考:Rabbit实战指南 延迟队列 延迟队列存储的对象是对应的延迟消息,所谓“延迟消息”是指当消息被发送以后...

  • 延迟队列

    概念     延迟队列存储的对象是对应的延迟消息,所谓"延迟消息"是指当消息被发送以后,并不想让消费者立刻拿到消息...

  • spring boot 集成rabbitmq 实现延迟队列

    rabbitmq 实现延迟队列 什么是延迟队列 延迟队列存储的对象肯定是对应的延时消息,所谓”延时消息”是指当消息...

  • RocketMQ 延迟消息

    概述 RocketMQ 支持发送延迟消息,但不支持任意时间的延迟消息的设置,仅支持内置预设值的延迟时间间隔的延迟消...

  • RocketMQ延迟消息

    延时消息即消息发送后并不立即对消费者可见,而是在用户指定的时间投递给消费者。比如我们现在发送一条延时30秒的消息,...

  • 如何在MQ中实现支持任意延迟的消息?

    如何在MQ中实现支持任意延迟的消息? 什么是定时消息和延迟消息? 定时消息:Producer 将消息发送到 MQ ...

  • RabbitMQ面试题:什么是延迟队列? --- 2022-04

    RabbitMQ延迟队列就是存储延迟消息的队列,延迟消息指的就是消息投递到队列后,消费者不能立刻消费,需要等待一段...

网友评论

    本文标题:延迟消息

    本文链接:https://www.haomeiwen.com/subject/axthyltx.html