目录
下载
RocketMQ是由阿里巴巴在2010年开源的分布式消息中间件,目前已经捐给Apache基金会了。
由此我们需要去Apache官网下载这里提供Apache RocketMQ官方文档
我们直接下载二进制版本就行RocketMQ-4.4.0我们这里采用官网案例版本。(官方链接直接点击下载即可!)
解压打开后
安装/启动
安装方式提供两种 windows Ubuntu
windows
前提 需要配置好java环境变量
刚刚解压的文件放在一个你喜欢的位置
我们去配置系统环境变量
启动
启动mqnamesrv.cmd
cmd命令框执行进入至‘MQ文件夹\bin’下,然后执行start mqnamesrv.cmd,启动NAMESERVER。成功后会弹出提示框,此框勿关闭。说明mqnamesrv启动成功了!
在继续启动mqbroker.cmd
然后执行start mqbroker.cmd -n 127.0.0.1:9876 autoCreateTopicEnable=true启动BROKER。成功后会弹出提示框,此框勿关闭。 boot success 说明启动成功了!
窗口都不要关了! 去写代码 看代码案例!
Ubuntu
前提 需要配置好java环境变量
一样的把解压的文件夹放在Ubuntu系统的某个文件夹中
配置环境变量
vim /etc/profile
保存后
执行 source /etc/profile 让环境变量立即生效
使用nohup 命令会提示 nohup: 忽略输入并把输出追加到'nohup.out' 忽略它 直接回车
Start Name Server
> nohup sh bin/mqnamesrv &
> tail -f ~/logs/rocketmqlogs/namesrv.log
出现 The Name Server boot success...说明成功了
Start Broker
> nohup sh bin/mqbroker -n localhost:9876 &
> tail -f ~/logs/rocketmqlogs/broker.log
出现The broker[%s, 172.30.30.233:10911] boot success...说明成功了!
OK 都启动成功了! 直接看代码案例
关闭命令
> sh bin/mqshutdown namesrv
The mqnamesrv(36664) is running...
Send shutdown request to mqnamesrv(36664) OK> sh bin/mqshutdown broker
The mqbroker(36695) is running...
Send shutdown request to mqbroker(36695) OK
代码案例
创建一个项目
引入关键依赖
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-client</artifactId>
<version>4.5.1</version>
</dependency>
编写Producer 生产者
public class Producer {
public static void main(String[] args) throws MQClientException {
//使用生产者组名称进行实例化。
DefaultMQProducer producer = new DefaultMQProducer("rmq-group");
// 指定名称服务器地址。
producer.setNamesrvAddr("172.16.157.128:9876");
// 指定实例名称。
producer.setInstanceName("producer");
//启动实例
producer.start();
try {
for (int i = 0; i < 10; i++) {
Thread.sleep(1000); //每秒发送一次MQ
//创建消息实例,指定主题,标记和消息正文。
Message msg = new Message("TopicA-test",// topic
"TagA",// tag
(new Date() + "Hello RocketMQ ,QuickStart" + i)
.getBytes()// body
);
//呼叫发送消息以向其中一个经纪人发送消息。
SendResult sendResult = producer.send(msg);
System.out.println(sendResult);
}
} catch (Exception e) {
e.printStackTrace();
}
//生产者实例不再使用后关闭。
producer.shutdown();
}
}
接着编写我们的Consumer消费者
public class Consumer {
public static void main(String[] args) throws MQClientException {
// 使用指定的使用者组名称进行实例化
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("rmq-group");
// 指定名称服务器地址。
consumer.setNamesrvAddr("172.16.157.128:9876");
// 订阅一个要消费实例名称。
consumer.setInstanceName("consumer");
// 订阅一个要消费的主题。
consumer.subscribe("TopicA-test", "TagA");
//注册回调以在从代理获取的消息到达时执行。
consumer.registerMessageListener(new MessageListenerConcurrently() {
@Override
public ConsumeConcurrentlyStatus consumeMessage(
List<MessageExt> 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.");
}
}
这个ip地址改为你自己的哦!
我们先启动Consumer消费者
此时是没有东西可以消费的!
我们在启动Producer生产者
Producer每隔1秒发送消息 切换到Consumer控制台 发现 有一条消息进来 就消费一条消息
源代码下载
源代码已上传github
https://github.com/rrym/MqDemo.git