ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

RocketMQ(三)——————javaAPI(8.重试机制)

2021-03-30 18:02:09  阅读:226  来源: 互联网

标签:发送 producer 默认 重试 javaAPI new consumer RocketMQ


 

producer:

**默认超时时间**

/**
* Timeout for sending messages.
*/
private int sendMsgTimeout = 3000;


// 异步发送时 重试次数,默认 2
producer.setRetryTimesWhenSendAsyncFailed(1);
// 同步发送时 重试次数,默认 2
producer.setRetryTimesWhenSendFailed(1);

// 是否向其他broker发送请求 默认false
producer.setRetryAnotherBrokerWhenNotStoreOK(true);

Consumer:

消费超时,单位分钟

`consumer.setConsumeTimeout()`

发送ack,消费失败

`RECONSUME_LATER`

broker投递:

只有在消息模式为MessageModel.CLUSTERING集群模式时,Broker才会自动进行重试,广播消息不重试

重投使用`messageDelayLevel`

默认值:

messageDelayLevel 1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h

 

1、生产者样例

 

//添加重试机制
    public static void main(String[] args) throws Exception {

        DefaultMQProducer producer = new DefaultMQProducer("MQ2Group");

        producer.setNamesrvAddr("127.0.0.1:9876");

        producer.start();

        //异步发送 重试次数 系统默认是2
        producer.setRetryTimesWhenSendAsyncFailed(1);
        //同步发送 重试次数 系统默认是2
//        producer.setRetryTimesWhenSendFailed(1);
        producer.send(new Message("MQ2Topic","回调消息!".getBytes()));
        producer.setRetryAnotherBrokerWhenNotStoreOK(true);
//        producer.shutdown();
        System.out.println("生产者下线!");

    }

 

 

2、消费者样例

    //接收消息
    public static void main(String[] args) throws Exception {

        DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("MQ2Group");

        consumer.setNamesrvAddr("127.0.0.1:9876");

        consumer.subscribe("MQ2Topic","*");
        consumer.registerMessageListener(new MessageListenerConcurrently() {

            public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> list, ConsumeConcurrentlyContext consumeConcurrentlyContext) {

                for (MessageExt mes: list) {

                    System.out.println("mes : "+new String(mes.getBody()));
                }

                return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
            }
        });



        consumer.start();
        System.out.println("Consumer  start...");
    }

 

标签:发送,producer,默认,重试,javaAPI,new,consumer,RocketMQ
来源: https://www.cnblogs.com/lifan12589/p/14598012.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有