1.安装环境(windows)
①JDK1.7以上版本;②Maven;③Git(非必需)
2.下载RocketMQ(官网http://rocketmq.apache.org/release_notes/release-notes-4.2.0/)
此处下载"Binary"版本("Binary"版本为已编译过的"class"文件,"Source"为未编码的源文件)
3.解压后配置系统环境变量ROCKETMQ_HOME(变量值为解压目录)
4.启动Name Server和Broker
进入.\bin目录,执行"start mqnamesrv.cmd",执行成功后执行"start mqbroker.cmd -n 127.0.0.1:9876 autoCreateTopicEnable=true"
将会跳出两个窗口,均保持打开状态.
至此安装成功
1,下载rocketmq-externals工具包,可以从git直接拉取,也可从githup上进行下载
地址:https://github.com/apache/rocketmq-externals.git
2.下载完成之后,进入‘rocketmq-externals\rocketmq-console\src\main\resources’文件夹,打开‘application.properties’进行配置。
说明:
server.port指通过浏览器访问RocketMQ图形管理界面的端口(此处可根据需要进行修改,默认的8080一般与Tomcat冲突)namesrvAddr指nameServer绑定的地址和端口(此处一般固定设置)
配置完成后进入‘\rocketmq-externals\rocketmq-console’文件夹,执行‘mvn clean package -Dmaven.test.skip=true’,编译生成。
编译成功之后,Cmd进入‘target’文件夹,执行‘java -jar rocketmq-console-ng-1.0.0.jar’,启动‘rocketmq-console-ng-1.0.0.jar’。
启动成功后,保持住窗口,打开浏览器访问127.0.0.1:8082(端口为之前设置的端口)
生产者代码:
import com.alibaba.rocketmq.client.exception.MQClientException;
import com.alibaba.rocketmq.client.producer.DefaultMQProducer;
import com.alibaba.rocketmq.client.producer.SendResult;
import com.alibaba.rocketmq.common.message.Message;
public class Producer {
public static void main(String[] args) throws MQClientException, InterruptedException {
//声明并初始化一个producer
//需要一个producer group名字作为构造方法的参数,这里为producer1
DefaultMQProducer producer = new DefaultMQProducer("producer1");
//设置NameServer地址,此处应改为实际NameServer地址,多个地址之间用;分隔
//NameServer的地址必须有,但是也可以通过环境变量的方式设置,不一定非得写死在代码里
producer.setNamesrvAddr("10.50.20.167:9876");
//调用start()方法启动一个producer实例
producer.start();
//发送10条消息到Topic为TopicTest,tag为TagA,消息内容为“Hello RocketMQ”拼接上i的值
for (int i = 0; i < 10; i++) {
try {
Message msg = new Message("TopicTest",// topic
"TagA",// tag
("Hello RocketMQ ,QuickStart" + i)
.getBytes()// body
);
//调用producer的send()方法发送消息
//这里调用的是同步的方式,所以会有返回结果
SendResult sendResult = producer.send(msg);
//打印返回结果,可以看到消息发送的状态以及一些相关信息
System.out.println(sendResult);
} catch (Exception e) {
e.printStackTrace();
Thread.sleep(1000);
}
}
//发送完消息之后,调用shutdown()方法关闭producer
producer.shutdown();
}
}
消费者代码:
import java.util.List;
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.message.MessageExt;
public class Consumer {
public static void main(String[] args) throws MQClientException {
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer(
"rmq-group");
consumer.setNamesrvAddr("10.50.20.167:9876");
consumer.setInstanceName("consumer");
consumer.subscribe("TopicTest", "TagA");
consumer.registerMessageListener(new MessageListenerConcurrently() {
public ConsumeConcurrentlyStatus consumeMessage(List msgs, ConsumeConcurrentlyContext context) {
for (MessageExt msg : msgs) {
System.out.println(new String(msg.getBody()));
}
return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
}
});
consumer.start();
System.out.println("Consumer Started.");
}
}
此处,所需的jar包可以自行导入,也可通过maven的pom.xml添加依赖如下:
com.alibaba.rocketmq
rocketmq-client
3.0.10
com.alibaba.rocketmq
rocketmq-all
3.0.10
pom
ch.qos.logback
logback-classic
1.1.1
ch.qos.logback
logback-core
1.1.1
junit
junit
4.10
test
运行成功后生产者和消费者结果如下:
至此,RocketMQ的部署和本地Demo测试完成。
部分资料来自https://blog.csdn.net/hsl_1990_08_15/article/details/80077552