Spring Cloud Alibaba 消息驱动

本文详细介绍了如何在Linux环境下部署RocketMQ,包括下载、上传、解压、配置文件修改、启动NameServer和Broker,以及测试消息的发送与接收。同时,文章还展示了如何在SpringBoot应用中集成RocketMQ,实现消息的发送和订阅功能。
摘要由CSDN通过智能技术生成

一、RocketMQ部署

1.下载RocketMQ

        地址:https://rocketmq.apache.org/release-notes/2023/03/26/4.9.5

        注意:下载版本要和springcloudalibaba版本一致 

        ​​​​​​版本说明 · alibaba/spring-cloud-alibaba Wiki · GitHub

2.将压缩文件通过Xftp7上传到linux上面

3.在linux中解压文件

[root@localhost RockedMQ]# unzip rocketmq-all-4.9.5-bin-release.zip

4.修改配置文件

修改一:
[root@localhost bin]# vim runserver.sh
改成:(if else里面都需要改)
#  JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"


修改二:
[root@localhost bin]# vim runbroker.sh
改成:
#  JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g"
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"


修改三:
[root@localhost bin]# vim tools.sh
改成:
#  JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"

开启自动创建Topic功能

[root@localhost conf]# vim broker.conf 
末尾添加:autoCreateTopicEnable=true

5、启动RocketMQ

5.1 启动NameServer

##  创建日志目录
cd bin
mkdir logs

##  启动NameServer
[root@localhost bin]# nohup ./mqnamesrv > logs/mqnamesrv.out 2>1 &

##  查看日志
[root@localhost bin]# tail -f logs/mqnamesrv.out

## 看到以下表示启动成功
The Name Server boot success. serializeType=JSON

5.2 启动Broker

## 启动命令,并且常驻内存:注意ip地址要配置成为服务的ip地址,保证地址以及端口能够访问
## nohup ./mqbroker -n 192.168.169.128:9876 & :属于后台以静默⽅式启动
## sh ./mqbroker -n 192.168.169.128:9876 :属于终端启动,直接输出日志信息,按 ctrl+c 可直接关闭退出
[root@localhost bin]# nohup ./mqbroker -n 192.168.169.128:9876 > logs/mqbroker.out 2>1 &

##  查看启动状态
[root@localhost bin]# tail -f logs/mqbroker.out

##  看到以下表示启动成功
The broker[linux1, 192.168.169.128:10911] boot success. serializeType=JSON and name server is 192.168.169.128:9876


## 如果查看启动状态一直没反应
cd /root/store
rm -rf *
再重新启动borker

6、测试RocketMQ

6.1 测试消息发送

[root@localhost bin]# export NAMESRV_ADDR=localhost:9876
[root@localhost bin]# cd ../
[root@localhost rocketmq-all-4.9.5-bin-release]# sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
[2.007s][warning][gc,ergo] NewSize was set larger than initial heap size, will use initial heap size.
[2.007s][warning][gc,ergo] MaxNewSize (262144k) is equal to or greater than the entire heap (262144k).  A new max generation size of 262080k will be used.
SendResult [sendStatus=SEND_OK, msgId=7F0000011705277050DC98CE3C990000, offsetMsgId=C0A8A98000002A9F0000000000000940, messageQueue=MessageQueue [topic=TopicTest, brokerName=localhost.localdomain, queueId=0], queueOffset=0]
SendResult [sendStatus=SEND_OK, msgId=7F0000011705277050DC98CE3D0A0001, offsetMsgId=C0A8A98000002A9F00000000000009FE, messageQueue=MessageQueue [topic=TopicTest, brokerName=localhost.localdomain, queueId=1], queueOffset=0]
………………
SendResult [sendStatus=SEND_OK, msgId=7F0000011705277050DC98CE4E5703E7, offsetMsgId=C0A8A98000002A9F000000000002F612, messageQueue=MessageQueue [topic=TopicTest, brokerName=localhost.localdomain, queueId=3], queueOffset=249]
16:07:37.541 [NettyClientSelector_1] INFO RocketmqRemoting - closeChannel: close the connection to remote address[127.0.0.1:9876] result: true
16:07:37.549 [NettyClientSelector_1] INFO RocketmqRemoting - closeChannel: close the connection to remote address[192.168.169.128:10911] result: true

6.2 测试消息接受

[root@localhost bin]# sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
OpenJDK 64-Bit Server VM warning: MaxNewSize (262144k) is equal to or greater than the entire heap (262144k).  A new max generation size of 261632k will be used.
16:21:15.395 [main] DEBUG i.n.u.i.l.InternalLoggerFactory - Using SLF4J as the default logging framework
Consumer Started.
ConsumeMessageThread_3 Receive New Messages: [MessageExt [brokerName=linux1, queueId=2, storeSize=201, queueOffset=1, sysFlag=0, bornTimestamp=1659601146477, bornHost=/192.168.0.101:48216, storeTimestamp=1659601146478, storeHost=/172.17.0.1:10911, msgId=AC11000100002A9F000000000000057F, commitLogOffset=1407, bodyCRC=988340972, reconsumeTimes=0, preparedTransactionOffset=0, toString()=Message{topic='TopicTest', flag=0, properties={MIN_OFFSET=0, MAX_OFFSET=250, CONSUME_START_TIME=1659601275866, UNIQ_KEY=AC11000176396FF3C5B512F37A6D0007, CLUSTER=DefaultCluster, WAIT=true, TAGS=TagA}, body=[72, 101, 108, 108, 111, 32, 82, 111, 99, 107, 101, 116, 77, 81, 32, 55], transactionId='null'}]] 
ConsumeMessageThread_4 Receive New Messages: [MessageExt [brokerName=linux1, queueId=2, storeSize=202, queueOffset=2, sysFlag=0, bornTimestamp=1659601146500, bornHost=/192.168.0.101:48216, storeTimestamp=1659601146501, storeHost=/172.17.0.1:10911, msgId=AC11000100002A9F00000000000008A4, commitLogOffset=2212, bodyCRC=2088767104, reconsumeTimes=0, preparedTransactionOffset=0, toString()=Message{topic='TopicTest', flag=0, properties={MIN_OFFSET=0, MAX_OFFSET=250, CONSUME_START_TIME=1659601275867, UNIQ_KEY=AC11000176396FF3C5B512F37A84000B, CLUSTER=DefaultCluster, WAIT=true, TAGS=TagA}, body=[72, 101, 108, 108, 111, 32, 82, 111, 99, 107, 101, 116, 77, 81, 32, 49, 49], transactionId='null'}]] 

二、springboot集成rocketmq

1、订单微服务 发送消息

1.1 pom.xml文件添加依赖

<dependency>
    <groupId>org.apache.rocketmq</groupId>
    <artifactId>rocketmq-spring-boot-starter</artifactId>
    <version>2.2.2</version>
</dependency>

1.2 application.yml配置文件

rocketmq:
  name-server: 192.168.169.128:9876
  producer:
    group: order-group # 消息分组

1.3 发送消息服务

@RestController
@RequestMapping("/mq")
public class RocketMQController {
    @Autowired
    private RocketMQTemplate rocketMQTemplate;

    @GetMapping("/send")
    public void send(){
        rocketMQTemplate.convertAndSend("order-topic", "hello world from repository!!");
    }
}

2、用户微服务 订阅消息 

2.1 pom.xml文件添加依赖

<dependency>
    <groupId>org.apache.rocketmq</groupId>
    <artifactId>rocketmq-spring-boot-starter</artifactId>
    <version>2.2.2</version>
</dependency>

2.2 bootstrap.yml配置文件

rocketmq:
  name-server: 192.168.169.128:9876

2.3 订阅消息服务

@Service
@RocketMQMessageListener(consumerGroup = "order-group", topic = "order-topic")
public class SmsService implements RocketMQListener<String> {
    private Logger logger = LoggerFactory.getLogger("user-server");
    @Override
    public void onMessage(String s) {
        logger.info("收到一个订单信息{},接下来发送短信"+s);
    }
}

3、在网页上访问成功后,用户服务就会收到消息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值