Spring Cloud Alibaba 搭建(RocketMQ篇)

  RocketMQ 是一款开源的分布式消息系统,还有其他rabbitMq、kafka等其他消息队列组件,官方推荐RocketMQ更符合分布式开发系统。

一、下载RocketMQ

  官网地址:https://www.apache.org/dyn/closer.cgi?path=rocketmq/4.3.2/rocketmq-all-4.3.2-bin-release.zip

  集群模式教程:https://github.com/apache/rocketmq/blob/master/docs/cn/operation.md

 

二、启动 NameServer

  如果是云服务器,建议使用公网IP,若使用内网IP容易出现问题。

nohup ./mqnamesrv -n 124.xxx.xxx.xxx:9876 &

 

三、启动 Broker

  配置文件./config/broker.conf

复制代码
......
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
# 如果云服务,远程调用需要配置,不然会默认内网192.168.x.x
brokerIP1=124.xxx.xxx.xxx
复制代码

  调用broker,这里需要使用上面配置的broker.conf(若producer等都是本地,也可以不需要配置)

nohup ./mqbroker -n 124.xxx.xxx.xxx:9876 -c ../conf/broker.conf &

 

四、配置生产者

  例子代码:https://github.com/alibaba/spring-cloud-alibaba/tree/master/spring-cloud-alibaba-examples/rocketmq-example

  打开idea中maven项目导入。

  其他基本都不需要改变,主要是application.properties配置文件需要修改。

......
#这个云服务需要公网IP,如果本地则默认localhost:9876
spring.cloud.stream.rocketmq.binder.name-server=124.xxx.xxx.xxx:9876
......(下面省略)

  直接运行RocketMQProduceApplication类中的main方法,消息就会推送。可以看到控制台信息

 

 

 

四、配置消费者

  其他基本都不需要改变,主要是application.properties配置文件需要修改。

......
#这个云服务需要公网IP,如果本地则默认localhost:9876
spring.cloud.stream.rocketmq.binder.name-server=124.xxx.xxx.xxx:9876
......(下面省略)

  直接运行RocketMQConsumerApplication类中的mian方法,消息就会开始接收。控制台信息

 

 

 

五、RocketMQ控制台

  上面基本已经完成RocketMQ基本应用,但是看不到接收、发送等等信息,所以这里就有了RocketMQ控制台,这里也只需要配置一下即可。

  官网项目地址:https://github.com/apache/rocketmq-externals

  实际上是这里面的子项目rocketmq-console

 

  下载下来之后,也是导入idea中,然后开始配置application.properties

server.address=0.0.0.0
server.port=8111 #这里端口号......(省略)
#if this value is empty,use env value rocketmq.config.namesrvAddr  NAMESRV_ADDR | now, you can set it in ops page.default localhost:9876
rocketmq.config.namesrvAddr=124.xxx.xxx.xxx:9876  #这里就需要注意,Name Server云服务公网ip
......(省略)

 配置完之后,直接打成jar,就可以运行。

java -jar rocketmq-console-2.0.0.jar > rocketmq-console.log &

 打开浏览器访问http://127.0.0.1:8111就可以看到了,下图的信息。

 

 

 六、总结

  消息队列在微服务中有着不可忽视的作用,它有着异步、削峰(限流)、解耦的特征,在面对突发高峰等情况也能,很好的维持了服务的稳定性。

本来配置到第四步觉得RocketMQ竟然没有控制台,原本令我略微失望。不过在查找材料发现他没有集成在一起,只需要另外配置。

最后注意一点!!!项目放在云服务最好开放端口10909、10911、10912这三个端口,虽然地址是10911端口,但是在运行期间发现10909、10911、10912三个端口竟然都会开启服务。

posted @   Auler  阅读(2664)  评论(0编辑  收藏  举报
编辑推荐:
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
· 凌晨三点救火实录:Java内存泄漏的七个神坑,你至少踩过三个!
历史上的今天:
2017-09-25 java并发多面性
点击右上角即可分享
微信分享提示