javascript
Rocketmq基于docker部署并在Springboot中接入
服務器部署
關于在服務器上安裝docker并啟動守護進程,這里不再贅述,此處假設服務器已經安裝完成docker。
安裝并運行nameserver
docker run -d -p 9876:9876 -vpwd/data/namesrv/logs:/fddata/rocketmq/logs -vpwd/data/namesrv/store:/fddata/rocketmq/store --name rmqnamesrv rocketmqinc/rocketmq:4.4.0 sh mqnamesrv -n IP:9876
IP填寫服務器對外暴露的IP地址
tips:
- nameserver的端口無法修改,因此如果需要集群部署,必須要部署在不同的IP地址中
安裝并運行broker
由于在公司中只有一臺物理機,在一臺物理機上部署多臺master意義并不大,在這里我只部署了一臺master一臺slave。部署master和slave,需要讀取不同的配置文件,因此需要基于不同的配置文件構建兩個鏡像。
- master broker.conf
- slave broker.conf
IP這一欄必須要填寫,否則broker默認會采用內網IP,雖然能連上,但是外網無法訪問,無法使用,port一欄可以修改端口,默認是10911和10909,如果不想使用這兩個端口,可以通過這個參數修改,同時謹記,VIP端口和普通端口-2,所以在設置端口的時候不要重復了.比如master的端口設置成了8080,name啟動的同時如果沒有禁用掉VIP端口,那么同時還會占用8078端口,設置slave端口的時候要避開這兩個端口
- Dockerfile
在當前目錄進行鏡像打包:docker build -t="broker-m" .,docker build -t="broker-s" .
docker命令
- master
- slave
其中,PORT指向broker端口,PATH指向物理機中掛載的文件地址

如果看到這三行成功運行,表示啟動成功

同時在console界面也能看到一主一從已經啟動成功。在實際部署的過程中,發現console如果采用docker形式部署,會出現無法訪問物理機IP的情況,建議console不要使用docker部署而是直接部署到物理機上
springboot接入rocketmq
pom文件:
<!-- rocketmq --> <dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter</artifactId><version>2.0.1</version> </dependency>producer
在application.propertis中加入
# rocketmq rocketmq.name-server=IP:PORT rocketmq.producer.group=producerGroupIP和PORT填寫之前啟動nameserver時的IP和PORT,producer.group指定任意名字
之后在需要使用的地方注入 RocketMQTemplate即可。
SendCallback
如果調用asyncSend方法,則需要指定回調方法用于發送成功后的處理
consumer
在application.propertis中加入
# rocketmq rocketmq.name-server=IP:PORTIP和PORT填寫之前啟動nameserver時的IP和PORT
RocketMQListener
編寫類實現 RocketMQListener 接口, RocketMQListener接收一個泛型作為參數,經測試常用或者說實用的就兩種: String 和 MessageExt,其中, String類型接收的參數即為生產者發送的消息內容, MessageExt則包含了除消息內容之外的許多東西,可以按需實用。如果實用MessageExt,那么接收到的消息是byte數組,可以使用String res = new String(message.getBody(), CharEncoding.UTF_8)該行代碼來轉為 String
總結
至此整體部署就已經完成了,這里不得不吐槽一下,文檔缺失的內容實在是有點多,真是符合了程序員最討厭的兩件事:1.接手的項目沒有文檔 2.自己寫文檔
轉載于:https://www.cnblogs.com/cbzj/p/10826238.html
總結
以上是生活随笔為你收集整理的Rocketmq基于docker部署并在Springboot中接入的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: exam02-02
- 下一篇: cuDNN version incomp