虚拟机 centos7 单机安装 RocketMQ4.4.0 填坑版

修改运行内存:

# runserver.sh
JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m"

# runbroker.sh
JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m"

添加依赖

 
        org.apache.rocketmq
        rocketmq-client
        4.3.0
    

生产者topic为TopicTest2:

public class SyncProducer {
    public static void main(String[] args) throws Exception {
        //Instantiate with a producer group name.
        DefaultMQProducer producer = new
            DefaultMQProducer("please_rename_unique_group_name");
        // Specify name server addresses.
        producer.setNamesrvAddr("localhost:9876");
        //Launch the instance.
        producer.start();
        for (int i = 0; i < 100; i++) {
            //Create a message instance, specifying topic, tag and message body.
            Message msg = new Message("TopicTest2" /* Topic */,
                "TagA" /* Tag */,
                ("Hello RocketMQ " +
                    i).getBytes(RemotingHelper.DEFAULT_CHARSET) /* Message body */
            );
            //Call send message to deliver message to one of brokers.
            SendResult sendResult = producer.send(msg);
            System.out.printf("%s%n", sendResult);
        }
        //Shut down once the producer instance is not longer in use.
        producer.shutdown();
    }
}

 消费者(topic为TopicTest2):

public class Consumer {

    public static void main(String[] args) throws InterruptedException, MQClientException {

        // Instantiate with specified consumer group name.
        DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("please_rename_unique_group_name");
         
        // Specify name server addresses.
        consumer.setNamesrvAddr("localhost:9876");
        
        // Subscribe one more more topics to consume.
        consumer.subscribe("TopicTest2", "*");
        // Register callback to execute on arrival of messages fetched from brokers.
        consumer.registerMessageListener(new MessageListenerConcurrently() {

            @Override
            public ConsumeConcurrentlyStatus consumeMessage(List msgs,
                ConsumeConcurrentlyContext context) {
                System.out.printf("%s Receive New Messages: %s %n", Thread.currentThread().getName(), msgs);
                return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
            }
        });

        //Launch the consumer instance.
        consumer.start();

        System.out.printf("Consumer Started.%n");
    }
}

 

运行报错:

Exception in thread "main" org.apache.rocketmq.client.exception.MQClientException: No route info of this topic, TopicTest2
See http://rocketmq.apache.org/docs/faq/ for further details.
    at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.sendDefaultImpl(DefaultMQProducerImpl.java:610)
    at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.send(DefaultMQProducerImpl.java:1223)
    at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.send(DefaultMQProducerImpl.java:1173)
    at org.apache.rocketmq.client.producer.DefaultMQProducer.send(DefaultMQProducer.java:214)
    at SyncProducer.main(SyncProducer.java:22)

 

 

网上搜索后添加autoCreateTopicEnable=true后还是没有解决,

conf/broker.conf修改相关配置后也不行:

namesrvAddr=xx.xx.xx.xx:9876

brokerIP1=xx.xx.xx.xx

最后发现是依赖包的问题:version改为4.4.0后就ok了,


    org.apache.rocketmq
    rocketmq-client
    4.3.0

 

采坑总结:

1、虚拟机内运行rocketm4.4.0时可将内存调小:

    # runserver.sh
    JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m"

    # runbroker.sh
    JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m"

2、 product和consumer最终的启动命令和官网一致:

./mqnamesrv &

./mqbroker -n localhost:9876  &

2、rocketmq-client版本要和rocketmq版本保持一致

3、为什么可以通过这两个命令查看日志:

tail -f ~/logs/rocketmqlogs/namesrv.log
tail -f ~/logs/rocketmqlogs/broker.log 

 可以打开conf目录下的logback_namesrv.xml和logback_broker.xml查看具体配置,以logback_namesrv.xml为例:

找到配置项:

         ${user.home}/logs/rocketmqlogs/namesrv_default.log

${user.home}指当前用户的home路径,linux中~代表home目录,如果是root用户home目录就是/root,普通用户rocket的home目录就是/home/rocket, 所以如果是root用户,~/logs/rocketmqlogs/namesrv.log 代表/root/logs/rocketmqlogs/namesrv.log

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(rocketmq)