rocketmq 安装启动,及测试

参考官网
http://rocketmq.apache.org/docs/quick-start/

1. 安装

[root@vm_1 ~]# git clone -b develop https://github.com/apache/rocketmq.git
[root@vm_1 ~]# cd rocketmq
[root@vm_1 ~]# mvn -Prelease-all -DskipTests clean install -U
[root@vm_1 ~]# cd distribution/target/apache-rocketmq

2. 启动nameserver

[root@vm_1 ~]# nohup sh bin/mqnamesrv &
[root@vm_1 ~]# tail -f ~/logs/rocketmqlogs/namesrv.log
The Name Server boot success…

启动不了, 修改runserver.sh和runbroker.sh

JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:PermSize=128m -XX:MaxPermSize=320m"
3. 启动broker

[root@vm_1 ~]# nohup sh bin/mqbroker -n localhost:9876 &
[root@vm_1 ~]# tail -f ~/logs/rocketmqlogs/broker.log
The broker[%s, 172.30.30.233:10911] boot success…

启动成功之后查看

[root@vm_1 ~]# jps
3811 Jps
25557 Kafka
3722 NamesrvStartup
3758 BrokerStartup

关闭

[root@vm_1 ~]# sh bin/mqshutdown broker
The mqbroker(36695) is running…
Send shutdown request to mqbroker(36695) OK

[root@vm_1 ~]# sh bin/mqshutdown namesrv
The mqnamesrv(36664) is running…
Send shutdown request to mqnamesrv(36664) OK

4.发消息

[root@vm_1 ~]# export NAMESRV_ADDR=localhost:9876
[root@vm_1 ~]# sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
SendResult [sendStatus=SEND_OK, msgId= …

[root@vm_1 ~]# sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
ConsumeMessageThread_%d Receive New Messages: [MessageExt…

5. 使rocketmq可以外网访问

[root@vm_1 ~]# sh bin/mqshutdown broker
[root@vm_1 ~]# sh bin/mqbroker -m >broker.p
[root@vm_1 ~]# vim broker.p
修改里面的IP地址如下
namesrvAddr=123.56.13.70:9876
brokerIP1=123.56.13.70
brokerName=localhost
brokerClusterName=DefaultCluster

重启broker

nohup sh bin/mqbroker -c broker.p &

这样就可以在本地写测试程序连接云上的rocketmq了

6. 示例代码

生成者

public class Producer {
    public static void main(String[] args) throws MQClientException, InterruptedException {
        DefaultMQProducer producer = new DefaultMQProducer("please_rename_unique_group_name");
        producer.setNamesrvAddr("123.56.13.70:9876");
        producer.start();

        for (int i = 1000; i < 2000; i++) {
            try {
                Message msg = new Message("TopicTest" /* Topic */,
                    "TagA" /* Tag */,
                    ("Hello RocketMQ " + i).getBytes(RemotingHelper.DEFAULT_CHARSET) /* Message body */
                );
                SendResult sendResult = producer.send(msg);

                System.out.printf("%s%n", sendResult);
            } catch (Exception e) {
                e.printStackTrace();
                Thread.sleep(1000);
            }
        }
        producer.shutdown();
    }
}

消费者

public class Consumer {

    public static void main(String[] args) throws InterruptedException, MQClientException {
        DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("please_rename_unique_group_name");
        consumer.setNamesrvAddr("123.56.13.70:9876");
        consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET);
        consumer.subscribe("TopicTest", "*");
        consumer.registerMessageListener(new MessageListenerConcurrently() {
            @Override
            public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs,
                        ConsumeConcurrentlyContext context) {
                System.out.printf(Thread.currentThread().getName() + " Receive New Messages: " + msgs + "%n");
                return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
            }
        });
        consumer.start();
        System.out.printf("Consumer Started.%n");
    }
}

猜你喜欢

转载自blog.csdn.net/baidu_36327010/article/details/80966874