目錄
下載
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