SpringBoot整合RocketMQ
1.RocketMQ的下载与配置
到官网选择想要的版本下载即可,https://rocketmq.apache.org/release_notes/
下载速度会比较慢,这里提供目前最新版本4.9.3的压缩包,https://wwm.lanzouw.com/ijBoC01bi2yh
压缩包选择路径解压即可
配置一个环境变量:ROCKETMQ_HOME,变量值为RocketMQ的安装路径,并把这个变量配置到path中,类似于JAVA_HOME
建议配置环境变量:NAMESRV_ADDR,变量值为127.0.0.1:9876。不配的话启动mqbroker之前需要cmd进入RocketMQ安装目录下的bin目录set一下这个变量
在bin目录下先后启动mqnamesrv和mqbroker

启动成功会分别有如下显示


2.整合
pom.xml中添加依赖,如下所示
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-spring-boot-starter</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<scope>compile</scope>
</dependency>
配置application.yaml,具体如下
server:
port: 80 rocketmq:
name-server: localhost:9876
producer:
group: group_1
编写controller层
package me.xiaomaju.controller; import me.xiaomaju.service.RocketMQService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; @RestController
@RequestMapping("/msg")
public class RockerMQController { @Autowired
private RocketMQService rocketMQService; @RequestMapping("{id}")
public void sendMessage(@PathVariable String id){
rocketMQService.sendMessage(id);
} }
编写service层,消息异步发送的逻辑
package me.xiaomaju.service.impl;
import me.xiaomaju.service.RocketMQService;
import org.apache.rocketmq.client.producer.SendCallback;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class RocketMQImpl implements RocketMQService {
@Autowired
private RocketMQTemplate rocketMQTemplate;
@Override
public void sendMessage(String id) {
System.out.println("已进入处理队列,id:" + id);
rocketMQTemplate.asyncSend("id_user", id, new SendCallback() {
@Override
public void onSuccess(SendResult sendResult) {
System.out.println("消息已成功发送:" + sendResult);
}
@Override
public void onException(Throwable throwable) {
System.out.println("消息发送异常,发送失败");
}
});
}
}
编写listener层,消息消费的逻辑
package me.xiaomaju.listener; import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.springframework.stereotype.Component; @Component
@RocketMQMessageListener(topic = "id_user",consumerGroup = "group_1")
public class MsgListenter implements RocketMQListener<String> { @Override
public void onMessage(String id) {
System.out.println("消息已消费,id:"+id);
}
}
此时服务正常启动,浏览器输入 http://localhost/msg/xmj0001 回车
控制台打印如下

完毕
SpringBoot整合RocketMQ的更多相关文章
- SpringBoot(17)---SpringBoot整合RocketMQ
SpringBoot整合RocketMQ 上篇博客讲解了服务器集群部署RocketMQ 博客地址:RocketMQ(2)---Docker部署RocketMQ集群 这篇在上篇搭建好的基础上,将Spri ...
- Springboot整合RocketMQ解决分布式事务
直接上代码: 代码结构如下: 依次贴出相关类: DataSource1Config: package com.example.demo.config;import org.apache.ibatis. ...
- springboot整合RocketMq(非事务)
1.配置文件 1.yml配置文件 rocketmq: #mq配置 producer: iseffect: true type: default # (transaction,default) tran ...
- SpringBoot - 集成RocketMQ实现延迟消息队列
目录 前言 环境 具体实现 前言 RocketMQ是阿里巴巴在2012年开源的分布式消息中间件,记录下SpringBoot整合RocketMQ的方式,RocketMQ的安装可以查看:Windows下安 ...
- RabbitMQ与SpringBoot整合
RabbitMQ SpringBoot 一.RabbitMQ的介绍 二.Direct模式 三.Topic转发模式 四.Fanout Exchange形式 原文地址: https://www.cnb ...
- springboot学习笔记-6 springboot整合RabbitMQ
一 RabbitMQ的介绍 RabbitMQ是消息中间件的一种,消息中间件即分布式系统中完成消息的发送和接收的基础软件.这些软件有很多,包括ActiveMQ(apache公司的),RocketMQ(阿 ...
- 一篇学习完rabbitmq基础知识,springboot整合rabbitmq
一 rabbitmq 介绍 MQ全称为Message Queue,即消息队列, RabbitMQ是由erlang语言开发,基于AMQP(Advanced MessageQueue 高级消息队列协议 ...
- (四)整合 RocketMQ ,实现请求异步处理
整合 RocketMQ ,实现请求异步处理 1.RocketMQ简介 1.1 架构图片 1.2 角色分类 1.3 通信机制 2.实现案例 2.1 项目结构图 2.2 配置文件 2.3 生产者配置 2. ...
- Canal 实战 | 第一篇:SpringBoot 整合 Canal + RabbitMQ 实现监听 MySQL 数据库同步更新 Redis 缓存
一. Canal 简介 canal [kə'næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费 早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同 ...
随机推荐
- node.js - http、模块化、npm
今天是node学习的第二天,其实越往后面学越感觉有点熟悉的味道了,光针对于node来说哈,为什么呢,因为我之前学过一点云计算的东西,当时感觉没什么用搞了下服务器客户端这些,没想到这里还能用一用,至少看 ...
- Transactional事务,事务嵌套的时候,如果主事务出现问题,子事务执行不需要回滚怎么做?
如果调用的方法在不在同一个service当中,则只需要在子事务当中的方法上方添加注解即可 下方即是:这就话代表:重新开启一个新的事务 @Transactional(propagation = Prop ...
- docker基础_Dockerfile
Dockerfile []: https://docs.docker.com/language/python/build-images/ "docker官方文档" 以python为 ...
- switch 和 if else if else 有什么区别
1. 一般情况下,它们两个语句可以相互替换 2. switch..case语句通常处理case为比较确定值的情况,而if...else...语句更加灵活,常用于范围判断(大于.等于某个范围) 3. ...
- 计算机系统6-> 计组与体系结构3 | MIPS指令集(中)| MIPS汇编指令与机器表示
上一篇计算机系统5-> 计组与体系结构2 | MIPS指令集(上)| 指令系统从顶层讲解了一个指令集 / 指令系统应当具备哪些特征和工作原理.这一篇就聚焦MIPS指令集(MIPS32),看看其汇 ...
- ElasticSearch7.3学习(二十)----采用restful风格查询详解
1.Query DSL入门 1.1 DSL DSL:Domain Specified Language,特定领域的语言.es特有的搜索语言,可在请求体中携带搜索条件,功能强大. 查询全部 GET /b ...
- Maven install没有将jar包加载到本地仓库
错误描述 使用mvn install:install-file -Dfile=ojdbc8-19.3.0.0.jar -DgroupId=com.oracle -DartifactId=ojdbc8 ...
- 一文讲透APaaS平台是什么
关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ 互联网行业就喜欢搞一些单词的缩写,在云计算行业,前者有SaaS.PaaS.IaaS,最近两三年 ...
- 没错,华为开始对IoT下手了!
最近,有很多粉丝在后台私信 想知道目前最热的技术是什么? 小编觉得,5G时代到来 物联网技术将迎来快速的发展 加上目前,国内物联网人才短缺 每年人才缺口达百万 IoT物联网将成为最热门的技术 最近,小 ...
- 【DIY】【CSAPP-LAB】深入理解计算机系统--datalab笔记
title: 前言 <深入理解计算机系统>一书是入门计算机系统的极好选择,从其第三版的豆瓣评分9.8分可见一斑.该书的起源是卡耐基梅龙大学 计算机系统入门课(Introduction to ...