Board logo

标题: RocketMQ 生产者 Producer 启动过程(1) [打印本页]

作者: look_w    时间: 2019-4-12 13:46     标题: RocketMQ 生产者 Producer 启动过程(1)

MQProducer


从类关系中可以看出,MQProducer 有两种实现方式。一个是 DefaultMQProducer,另一个是 TransactionMQProducer。

    DefaultMQProducer: 我们常用的生产者。
    TransactionMQProducer:继承自 DefaultMQProducer,并支持事务消息。

下面我们来分析下 DefaultMQProducer 启动的过程。
启动示例

    public class Producer {
        public static void main(String[] args) throws UnsupportedEncodingException {
            try {
                DefaultMQProducer producer = new DefaultMQProducer("please_rename_unique_group_name");
                producer.setNamesrvAddr("....");
                ......
                producer.start();
                ......
            }catch(Exception e){}
        }
    }

创建 DefaultMQProducer 实例,然后制定一些参数,调用 start() 方法就开启了生产者。
DefaultMQProducer 参数分析

    public class DefaultMQProducer extends ClientConfig implements MQProducer {
     
        //producer 组名
        private String producerGroup;
     
        // Topic 名字,默认为“TBW102”
        private String createTopicKey = MixAll.AUTO_CREATE_TOPIC_KEY_TOPIC;
     
        // 创建 Topic 默认的4个队列
        private volatile int defaultTopicQueueNums = 4;
     
        // 发送消息超时时间
        private int sendMsgTimeout = 3000;
     
        // 当发送的消息大于 4K 时,开始压缩消息。
        private int compressMsgBodyOverHowmuch = 1024 * 4;
     
        //同步发送消息,发送失败时再尝试发送2次数
        private int retryTimesWhenSendFailed = 2;
     
        // 异步发送消息,发送失败时再尝试发送2次数
        private int retryTimesWhenSendAsyncFailed = 2;
     
        //发送broker消息存储失败时,是否尝试去试发送其他的broker
        private boolean retryAnotherBrokerWhenNotStoreOK = false;
     
        //最大允许发送字节数
        private int maxMessageSize = 1024 * 1024 * 4; // 4M

DefaultMQProducer 中定义的类属性

    producerGroup: 生产者组名
    createTopicKey :Topic 名字,默认为“TBW102”
    defaultTopicQueueNums :创建 Topic 默认的4个队列
    sendMsgTimeout :默认发送消息3秒超时
    compressMsgBodyOverHowmuch :当发送的消息大于 4K 时,开始压缩消息。
    retryTimesWhenSendFailed :同步发送消息,发送失败时再尝试发送2次数。
    retryTimesWhenSendAsyncFailed :异步发送消息,发送失败时再尝试发送2次数
    retryAnotherBrokerWhenNotStoreOK :发送broker消息存储失败时,是否尝试去试发送其他的broker

DefaultMQProducer 还有可以设置其他的参数,这里就不说明了。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0