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三个端口竟然都会开启服务。

原文地址:https://www.cnblogs.com/zrl66/p/13718959.html