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 -c >broker.p
[root@vm_1 ~]# vim broker.p
修改里面的IP地址如下
namesrvAddr=你机器的ip:9876
brokerIP1=你机器的ip
brokerName=localhost
brokerClusterName=DefaultCluster

-c,–configFile 代理配置属性文件
-m,–printImportantConfig 打印重要配置项
-n,–namesrvAddr 服务器地址列表, eg: 192.168.0.1:9876;192.168.0.2:9876
-p,–printConfigItem 打印所有配置项

重启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");
    }
}

你可能感兴趣的:(Linux)