学习rocketmq(1)安装启动入门,是rocketmq可以外网访问

来源:互联网 发布:电脑微信群发软件 编辑:程序博客网 时间:2024/03/28 18:07

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

1. 安装

> git clone -b develop https://github.com/apache/rocketmq.git  > cd rocketmq  > mvn -Prelease-all -DskipTests clean install -U  > cd distribution/target/apache-rocketmq  > 

2. 启动nameserver

  > nohup sh bin/mqnamesrv &  > 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

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

查看

[root@iZ2zei0nwllapkwklisoncZ apache-rocketmq]# jps3811 Jps25557 Kafka3722 NamesrvStartup3758 BrokerStartup

3. 关闭

> sh bin/mqshutdown brokerThe mqbroker(36695) is running...Send shutdown request to mqbroker(36695) OK> sh bin/mqshutdown namesrvThe mqnamesrv(36664) is running...Send shutdown request to mqnamesrv(36664) OK

4.发消息

 > export NAMESRV_ADDR=localhost:9876 > sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer SendResult [sendStatus=SEND_OK, msgId= ... > sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer ConsumeMessageThread_%d Receive New Messages: [MessageExt...

5. 使rocketmq可以外网访问

sh bin/mqshutdown brokersh bin/mqbroker -m >broker.pvim broker.p 修改里面的IP地址如下namesrvAddr=123.56.13.70:9876brokerIP1=123.56.13.70brokerName=localhostbrokerClusterName=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");    }}

bingo!