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 数据库增量日志解析,提供增量数据订阅和消费 早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同 ...
随机推荐
- BurpSuite下提示embedded browser initialisation failed(嵌入式浏览器初始化失败)的解决方法
BurpSuite可谓是渗透测试过程经常使用的神器之一,但使用中经常会碰到奇奇怪怪的问题,比如有时抓http包,发送到Repeater(中继器,也叫重发器)模块后,在右边Render模块下,却无法看到 ...
- vue学习day01
什么是 vue 构建用户界面 用 vue 往 html 页面中填充数据,非常的方便 框架 框架是一套现成的解决方案,程序员只能遵守框架的规范,去编写自己的业务功能! 要学习 vue,就是在学习 vue ...
- 集合——Collection接口,List接口
集合:对象的容器,定义了对多个对象进行操作的常用方法.可实现数组的功能 集合和数组的区别: 数组长度固定,集合长度不固定 数组可以存储基本数据类型和引用数据类型,集合只能存储引用数据类型. 集合的位置 ...
- 【SpringBoot实战】视图技术-Thymeleaf
前言 在一个Web应用中,通常会采用MVC设计模式实现对应的模型.视图和控制器,其中,视图是用户看到并与之交互的界面.对最初的Web应用来说,视图是由HTML元素组成的静态界面:而后期的Web应用更倾 ...
- Go学习-基本语法(一)
前言 一直对Service Mesh相关内容比较感兴趣,后面一路学习了Dcoker.Kubernetes等相关内容,可以说是对基本概念和使用有一定了解,随着开始学习一些相关的组件的时候,发现基本上全部 ...
- 攻防世界-MISC:can_has_stdio?
这是攻防世界MISC高手进阶区的题目,题目如下: 点击下载附件一,解压后得到一个txt文件,打开后内容如下: 根据百度搜索的结果可知这是一种叫做BrainFuck的语言,BrainFuck是由Urba ...
- vue 收集表单数据 (有错误的请各位大佬指点)
收集表单数据: 若: <input type="text"/>, 则v-model收集 的是value值,用户输入的就是value值. 若 ...
- BGP路由协议详解(完整版)
(免责声明:来源于网络,版权原作者所有,转载仅为了传播.学习交流使用,如需删除请私信联系,严禁其他用途.) END 关注「开源Linux」加星标,提升IT技能 好文章,分享.点赞.在看三连哦️↓↓↓
- 简述 private、protected、 public、 internal修饰符的访问权限
1.private: 私有的,只能在此类中访问 2.protected: 受保护的,只能在此类及其继承类中访问 3.public: 公开的,没有访问限制 4:internal: 内部的,只能在当前程序 ...
- 《你不知道的JS》上