仮想マシンcentos 7スタンドアロンインストールRocketMQ 4.4.0ピット版

4889 ワード

実行メモリの変更:
# 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はTopicTest 2:
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はTopicTest 2):
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、仮想マシン内でrocketm 4を実行する.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、この2つのコマンドでログを表示できる理由:
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