淮南網(wǎng)站建設(shè)好的公司百姓網(wǎng)推廣怎么收費(fèi)標(biāo)準(zhǔn)
您好,我是碼農(nóng)飛哥(wei158556),感謝您閱讀本文,歡迎一鍵三連哦。
💪🏻 1. Python基礎(chǔ)專(zhuān)欄,基礎(chǔ)知識(shí)一網(wǎng)打盡,9.9元買(mǎi)不了吃虧,買(mǎi)不了上當(dāng)。 Python從入門(mén)到精通
😁 2. 畢業(yè)設(shè)計(jì)專(zhuān)欄,畢業(yè)季咱們不慌忙,幾百款畢業(yè)設(shè)計(jì)等你選。
?? 3. Python爬蟲(chóng)專(zhuān)欄,系統(tǒng)性的學(xué)習(xí)爬蟲(chóng)的知識(shí)點(diǎn)。9.9元買(mǎi)不了吃虧,買(mǎi)不了上當(dāng) 。python爬蟲(chóng)入門(mén)進(jìn)階
?? 4. Ceph實(shí)戰(zhàn),從原理到實(shí)戰(zhàn)應(yīng)有盡有。 Ceph實(shí)戰(zhàn)
?? 5. Java高并發(fā)編程入門(mén),打卡學(xué)習(xí)Java高并發(fā)。 Java高并發(fā)編程入門(mén)
文章目錄
- 1. 前言
- 2. 拉取鏡像
- 3. 下載可視化工具鏡像
- 4. broker配置
- 5.啟動(dòng)文件 rocketmq.yml 配置
- 6. 測(cè)試消息的發(fā)送和接收
- 首先,在pom.xml文件中添加RocketMQ的依賴(lài):
- 在application.properties文件中配置RocketMQ的相關(guān)信息:
- 創(chuàng)建一個(gè)生產(chǎn)者類(lèi):
- 創(chuàng)建一個(gè)消費(fèi)者類(lèi):
- 在主類(lèi)中調(diào)用生產(chǎn)者發(fā)送消息:
1. 前言
前文對(duì)RocketMQ的基本概念做了一些介紹,本文將小試牛刀一下。本文主要講述如何通過(guò)docker來(lái)部署單機(jī)版的RocketMQ。部署RocketMQ的最核心是部署nameserver以及部署broker。然后,我們還需要安裝可視化界面,在RocketMQ的官網(wǎng)上提供的是基礎(chǔ)的安裝方式。
2. 拉取鏡像
git clone https://github.com/apache/rocketmq-docker.git
如果訪(fǎng)問(wèn)不了github的話(huà)則需要科學(xué)上網(wǎng)。該命令會(huì)拉取最新的rocketmq鏡像。
下載好之后,可以通過(guò)訪(fǎng)問(wèn) https://archive.apache.org/dist/rocketmq/ 命令來(lái)查看rocketmq鏡像的版本。
下載好之后 執(zhí)行cd rocketmq-docker
命令跳轉(zhuǎn)到 ./rockeetmq-docker
命令。
然后,跳轉(zhuǎn)到 image-build
目錄,然后,執(zhí)行 build-image.sh 命令構(gòu)建鏡像。
cd image-build
sh build-image.sh 5.1.3 alpine
docker images
3. 下載可視化工具鏡像
docker pull apacherocketmq/rocketmq-dashboard:latest
4. broker配置
這里自定義一個(gè)路徑用于存放broker的配置,然后在此路徑下創(chuàng)建一個(gè)broker.conf的文件。
mkdir -p /Users/manongfeige/config/rocketmq
cd /Users/manongfeige/config/rocketmq/
touch broker.conf
vim broker.conf
broker.conf文件的配置信息如下:
# 所屬集群名稱(chēng),如果節(jié)點(diǎn)較多可以配置多個(gè)
brokerClusterName = DefaultCluster
#broker名稱(chēng),master和slave使用相同的名稱(chēng),表明他們的主從關(guān)系
brokerName = broker-a
#0表示Master,大于0表示不同的slave
brokerId = 0
#表示幾點(diǎn)做消息刪除動(dòng)作,默認(rèn)是凌晨4點(diǎn)
deleteWhen = 04
#在磁盤(pán)上保留消息的時(shí)長(zhǎng),單位是小時(shí)
fileReservedTime = 48
#有三個(gè)值:SYNC_MASTER,ASYNC_MASTER,SLAVE;同步和異步表示Master和Slave之間同步數(shù)據(jù)的機(jī)制;
brokerRole = ASYNC_MASTER
#刷盤(pán)策略,取值為:ASYNC_FLUSH,SYNC_FLUSH表示同步刷盤(pán)和異步刷盤(pán);SYNC_FLUSH消息寫(xiě)入磁盤(pán)后才返回成功
狀態(tài),ASYNC_FLUSH不需要;
flushDiskType = ASYNC_FLUSH
# 設(shè)置broker節(jié)點(diǎn)所在服務(wù)器的ip地址、物理ip,不能用127.0.0.1、localhost、docker內(nèi)網(wǎng)ip
brokerIP1 = 192.168.41.121
這里需要注意的是設(shè)置broker節(jié)點(diǎn)所在的服務(wù)器ip地址,必須是真實(shí)的物理ip,不能用127.0.0.1、localhost、docker內(nèi)網(wǎng)ip。
在mac電腦中通過(guò) ifconfig
命令來(lái)查看。
配置好broker.conf,接著配置啟動(dòng) RocketMQ的yml文件。這里創(chuàng)建一個(gè) rocketmq.yml 文件,跟broker.conf文件放在同一個(gè)目錄下。
5.啟動(dòng)文件 rocketmq.yml 配置
version: '3'
services:namesrv:image: apache/rocketmq:5.1.3-alpinecontainer_name: rmqnamesrvports: - 9876:9876command: sh mqnamesrvbroker:image: apache/rocketmq:5.1.3-alpinecontainer_name: rmqbrokerports:- 10909:10909- 10911:10911- 10912:10912volumes:- /Users/manongfeige/config/rocketmq/broker.conf:/home/rocketmq/rocketmq-5.1.3/conf/broker.confcommand: sh mqbroker -n namesrv:9876 -c /home/rocketmq/rocketmq-5.1.3/conf/broker.confdepends_on:- namesrvmqconsole:image: apacherocketmq/rocketmq-dashboardcontainer_name: rmqdashboardports: - 8181:8080environment:JAVA_OPTS: -Drocketmq.config.namesrvAddr=namesrv:9876 -Drocketmq.config.isVIPChannel=falsedepends_on:- namesrv
此配置文件主要分為三部分:
-
第一部分是:nameserver的配置。nameserver默認(rèn)的端口是 9876。鏡像的話(huà)這里指定為:apache/rocketmq:5.1.3-alpine。如果版本不同需要做對(duì)應(yīng)的修改。如果不知道你的鏡像是啥可以在docker中查看。
-
配置broker
broker 需要注意的是將前面配置的 broker.conf 文件映射到容器中的
/home/rocketmq/rocketmq-5.1.3/conf/broker.conf
中去。 -
配置myconsole
主要是設(shè)置使用的鏡像,容器的名稱(chēng)以及使用的端口號(hào)。console 依賴(lài)的是Java環(huán)境以及nameserver。
配置好之后,接著執(zhí)行如下命令:
docker-compose -f rocketmq.yml up -d
啟動(dòng)正常的命令應(yīng)該是這樣的,然后。我們?cè)L問(wèn)一下 http://localhost:8181/#/producer 控制臺(tái)。
6. 測(cè)試消息的發(fā)送和接收
-
首先,在pom.xml文件中添加RocketMQ的依賴(lài):
<dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter</artifactId><version>2.2.3</version></dependency>
-
在application.properties文件中配置RocketMQ的相關(guān)信息:
rocketmq.name-server=192.168.31.191:9876 rocketmq.producer.group=myProducerGroup
-
創(chuàng)建一個(gè)生產(chǎn)者類(lèi):
@Component public class Producer {@Autowiredprivate RocketMQTemplate rocketMQTemplate;public void sendMessage(String topic, String message) {rocketMQTemplate.convertAndSend(topic, message);} }
-
創(chuàng)建一個(gè)消費(fèi)者類(lèi):
@Service @RocketMQMessageListener(topic = "test_topic", consumerGroup = "test_consumer_group") public class Consumer implements RocketMQListener<String> {@Overridepublic void onMessage(String s) {System.out.println("Received message:" + s);} }
-
在主類(lèi)中調(diào)用生產(chǎn)者發(fā)送消息:
@SpringBootApplication public class RocketmqDemoApplication {public static void main(String[] args) {ConfigurableApplicationContext run = SpringApplication.run(RocketmqDemoApplication.class, args);Producer producer = run.getBean(Producer.class);producer.sendMessage("test_topic", "你好呀,碼農(nóng)飛哥");} }