http://blog.csdn.net/akfly/article/details/53395289
早就听说过rocketmq,一直没时间去研究它
最近打算从hello world开始,,深入的学习rocketmq
0.git下载源码本地编译
git地址 https://github.com/alibaba/RocketMQ.git
下载完成后执行mvn 命令 构建工程
mvn -Dmaven.test.skip=true clean package install assembly:assembly -U
1. 从target目录中,解压 alibaba-rocketmq-broker.tar.gz 启动nameServer 和 brokerServer
tar -xzvf alibaba-rocketmq-broker.tar.gz
./mqnamesrv &
./mqbroker -n 127.0.0.1:9876 &
2.执行example中的例子 发送消息
product
- /**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- package com.alibaba.rocketmq.example.quickstart;
- import com.alibaba.rocketmq.client.exception.MQClientException;
- import com.alibaba.rocketmq.client.producer.DefaultMQProducer;
- import com.alibaba.rocketmq.client.producer.LocalTransactionExecuter;
- import com.alibaba.rocketmq.client.producer.LocalTransactionState;
- import com.alibaba.rocketmq.client.producer.SendResult;
- import com.alibaba.rocketmq.common.message.Message;
- import com.alibaba.rocketmq.remoting.common.RemotingHelper;
- public class Producer {
- public static void main(String[] args) throws MQClientException, InterruptedException {
- DefaultMQProducer producer = new DefaultMQProducer("please_rename_unique_group_name");
- producer.setNamesrvAddr("127.0.0.1:9876");
- producer.start();
- for (int i = 0; i < 100; i++) {
- try {
- Message msg = new Message("TopicTest",// topic
- "TagA",// tag
- ("Hello RocketMQ " + i).getBytes(RemotingHelper.DEFAULT_CHARSET)// body
- );
- SendResult sendResult = producer.send(msg);
- LocalTransactionExecuter tranExecuter = new LocalTransactionExecuter() {
- @Override
- public LocalTransactionState executeLocalTransactionBranch(Message msg, Object arg) {
- // TODO Auto-generated method stub
- return null;
- }
- };
- //producer.sendMessageInTransaction(msg, tranExecuter, arg)
- System.out.println(sendResult);
- } catch (Exception e) {
- e.printStackTrace();
- Thread.sleep(1000);
- }
- }
- producer.shutdown();
- }
- }
3.查看broker中topic信息
mqadmin查看信息,topic已经存在了
4.接着执行example consumer
- /**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- package com.alibaba.rocketmq.example.quickstart;
- import com.alibaba.rocketmq.client.consumer.DefaultMQPushConsumer;
- import com.alibaba.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext;
- import com.alibaba.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus;
- import com.alibaba.rocketmq.client.consumer.listener.MessageListenerConcurrently;
- import com.alibaba.rocketmq.client.exception.MQClientException;
- import com.alibaba.rocketmq.common.consumer.ConsumeFromWhere;
- import com.alibaba.rocketmq.common.message.MessageExt;
- import java.io.UnsupportedEncodingException;
- import java.util.List;
- public class Consumer {
- public static void main(String[] args) throws InterruptedException, MQClientException {
- DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("please_rename_unique_group_name_4");
- consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET);
- consumer.setNamesrvAddr("127.0.0.1:9876");
- consumer.subscribe("TopicTest", "*");
- consumer.registerMessageListener(new MessageListenerConcurrently() {
- @Override
- public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs,
- ConsumeConcurrentlyContext context) {
- System.out.println(Thread.currentThread().getName() + " Receive New Messages: " + msgs);
- for(MessageExt me:msgs){
- try {
- System.out.println(new String(me.getBody(),"utf-8"));
- } catch (UnsupportedEncodingException e) {
- e.printStackTrace();
- }
- }
- return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
- }
- });
- consumer.start();
- System.out.println("Consumer Started.");
- }
- }
ok,到这里,hello world 已经成功了