当前位置: 首页 > news >正文

Java项目集成RocketMQ

文章目录

    • 1.调整MQ的配置
        • 1.进入bin目录
        • 2.关闭broker和namesrv
        • 3.查看进程确认关闭
        • 4.编辑配置文件broker.conf,配置brokerIP1
        • 5.开放端口10911
        • 6.重新启动
          • 1.进入bin目录
          • 2.启动mqnamesrv和mqbroker
            • 1.启动 NameServer 并将输出重定向到 mqnamesrv.log
            • 2.**启动 Broker 并将输出重定向到** **mqbroker.log**
            • 3.**实时监控 NameServer 的日志文件**
            • 4.**实时监控 Broker 的日志文件**
            • 5.查看进程
    • 2.项目集成MQ
        • 1.domain引入mq依赖
        • 2.sun-club-application-mq 引入domain依赖,用于消费mq
        • 3.sun-club-starter 引入mq层
        • 4.application.yml 配置mq
        • 5.SubjectController.java
          • 1.依赖注入 RocketMQTemplate
          • 2.编写controller,作为消息生产者
        • 6.TestConsumer.java 测试消费
        • 5.测试
    • 3.点赞业务优化为MQ处理
        • 1.SubjectLikedMessage.java 点赞消息实体
        • 2.sun-club-domain 同步点赞数据
          • 1.SubjectLikedDomainService.java
          • 2.SubjectLikedDomainServiceImpl.java
          • 3.add方法逻辑修改
          • 4.测试

1.调整MQ的配置

1.进入bin目录
cd /usr/local/soft/rocketmq-all-4.8.0-bin-release/bin
2.关闭broker和namesrv
sh mqshutdown broker && sh mqshutdown namesrv

CleanShot 2024-07-12 at 12.20.25@2x

3.查看进程确认关闭
ps -ef | grep NamesrvStartup && ps -ef | grep BrokerStartup

CleanShot 2024-07-12 at 12.21.38@2x

4.编辑配置文件broker.conf,配置brokerIP1
vim /usr/local/soft/rocketmq-all-4.8.0-bin-release/conf/broker.conf
# NameServer 地址(开端口)
namesrvAddr=# brokerIP1 指定了 Broker 对外提供服务的 IP 地址
brokerIP1=# listenPort 指定了 Broker 监听客户端连接的端口(开端口)
listenPort=10911# 当这个选项设置为 true 时,如果客户端尝试向一个不存在的主题发送消息,Broker 会自动创建这个主题
autoCreateTopicEnable=true
5.开放端口10911
systemctl start firewalld && firewall-cmd --permanent --add-port=10911/tcp && firewall-cmd --reload && firewall-cmd --query-port=10911/tcp

CleanShot 2024-07-12 at 12.52.09@2x

6.重新启动
1.进入bin目录
cd /usr/local/soft/rocketmq-all-4.8.0-bin-release/bin
2.启动mqnamesrv和mqbroker
1.启动 NameServer 并将输出重定向到 mqnamesrv.log
nohup sh mqnamesrv > mqnamesrv.log 2>&1 &
2.启动 Broker 并将输出重定向到 mqbroker.log
nohup sh mqbroker -c ../conf/broker.conf > mqbroker.log 2>&1 &
3.实时监控 NameServer 的日志文件
tail -f mqnamesrv.log &

CleanShot 2024-07-12 at 12.40.03@2x

4.实时监控 Broker 的日志文件
tail -f mqbroker.log &
5.查看进程
ps -ef | grep NamesrvStartup && ps -ef | grep BrokerStartup

CleanShot 2024-07-12 at 12.57.04@2x

2.项目集成MQ

1.domain引入mq依赖
        <!-- rocketmq --><dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter</artifactId><version>2.1.1</version></dependency>

CleanShot 2024-07-12 at 13.05.02@2x

2.sun-club-application-mq 引入domain依赖,用于消费mq
        <!-- 引入domain层 --><dependency><groupId>com.sun.club</groupId><artifactId>sun-club-domain</artifactId><version>1.0-SNAPSHOT</version></dependency>

CleanShot 2024-07-12 at 13.07.58@2x

3.sun-club-starter 引入mq层
        <!-- 引入mq层 --><dependency><groupId>com.sun.club</groupId><artifactId>sun-club-application-mq</artifactId><version>1.0-SNAPSHOT</version></dependency>

CleanShot 2024-07-12 at 13.11.35@2x

4.application.yml 配置mq
# mq配置
rocketmq:name-server:  # 作用是服务注册和发现,会自动发现brokerproducer:group: test-group

CleanShot 2024-07-12 at 13.16.40@2x

5.SubjectController.java
1.依赖注入 RocketMQTemplate
    @Resourceprivate RocketMQTemplate rocketMQTemplate;
2.编写controller,作为消息生产者
    /*** 测试mq发送* @return*/@GetMapping("/pushMessage")public Result<Boolean> pushMessage(@Param("id") int id) {rocketMQTemplate.convertAndSend("first-topic", "hello " + id);return Result.ok();}

CleanShot 2024-07-12 at 13.34.21@2x

6.TestConsumer.java 测试消费
package com.sunxiansheng.subject.application.mq;import com.sun.media.jfxmedia.logging.Logger;
import groovy.util.logging.Slf4j;
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;/*** Description:* @Author sun* @Create 2024/7/12 13:24* @Version 1.0*/
@Component
// topic:主题,就是生产者那里指定的主题
// consumerGroup:消费组,在application.yml文件中配置的
// RocketMQListener<String>:这里的泛型就是消息的类型
@RocketMQMessageListener(topic = "first-topic", consumerGroup = "test-group")
@Slf4j
public class TestConsumer implements RocketMQListener<String> {private static final org.slf4j.Logger log = LoggerFactory.getLogger(TestConsumer.class);/*** 对消息进行消费* @param s*/@Overridepublic void onMessage(String s) {log.info("接受到消息了:{}", s);}}

CleanShot 2024-07-12 at 13.34.57@2x

5.测试

CleanShot 2024-07-12 at 13.35.13@2x

CleanShot 2024-07-12 at 13.35.21@2x

3.点赞业务优化为MQ处理

1.SubjectLikedMessage.java 点赞消息实体
package com.sunxiansheng.subject.domain.entity;import lombok.Data;
import lombok.experimental.Accessors;import java.io.Serializable;/*** 题目点赞消息*/
@Data
@Accessors(chain = true) // 支持链式调用
public class SubjectLikedMessage implements Serializable {/*** 题目id*/private Long subjectId;/*** 点赞人id*/private String likeUserId;/*** 点赞状态 1点赞 0不点赞*/private Integer status;}
2.sun-club-domain 同步点赞数据
1.SubjectLikedDomainService.java
    /*** MQ同步点赞数据* @param subjectLikedBO*/void syncLikedByMsg(SubjectLikedBO subjectLikedBO);
2.SubjectLikedDomainServiceImpl.java
    @Overridepublic void syncLikedByMsg(SubjectLikedBO subjectLikedBO) {SubjectLiked subjectLiked = new SubjectLiked();subjectLiked.setSubjectId(subjectLikedBO.getSubjectId());subjectLiked.setLikeUserId(subjectLikedBO.getLikeUserId());subjectLiked.setStatus(subjectLikedBO.getStatus());subjectLiked.setIsDeleted(IsDeleteFlagEnum.UN_DELETED.getCode());subjectLikedService.insert(subjectLiked);}
3.add方法逻辑修改

CleanShot 2024-07-12 at 14.33.20@2x

4.测试

CleanShot 2024-07-12 at 14.37.16@2x

CleanShot 2024-07-12 at 14.37.25@2x

相关文章:

Java项目集成RocketMQ

文章目录 1.调整MQ的配置1.进入bin目录2.关闭broker和namesrv3.查看进程确认关闭4.编辑配置文件broker.conf&#xff0c;配置brokerIP15.开放端口109116.重新启动1.进入bin目录2.启动mqnamesrv和mqbroker1.启动 NameServer 并将输出重定向到 mqnamesrv.log2.**启动 Broker 并将…...

如何将 Bamboo agent 能力迁移到极狐GitLab tag 上?

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门面向中国程序员和企业提供企业级一体化 DevOps 平台&#xff0c;用来帮助用户实现需求管理、源代码托管、CI/CD、安全合规&#xff0c;而且所有的操作都是在一个平台上进行&#xff0c;省事省心省钱。可以一键安装极狐GitL…...

正则表达式入门:Python ‘ re ‘ 模块详解

正则表达式&#xff08;Regular Expression&#xff0c;简称 re&#xff09;是一种强大而灵活的工具&#xff0c;广泛用于字符串匹配、替换和分割等操作&#xff0c;尤其在处理网页爬虫数据时非常有用。Python 提供了 " re " 模块来支持正则表达式的使用&#xff0c;…...

thinkphp8.0+aliapy(支付宝)pc网站支付

环境&#xff1a;宝塔-centOS8.5,php8.3 第一步&#xff1a;安装alipay v3版本的安装依赖包&#xff1b; composer require alipaysdk/openapi:dev第二步&#xff1a;根据官方文档,把支付相关的类引用进来&#xff1b; <?php declare (strict_types 1);namespace app\p…...

高速信号的眼图、加重、均衡

目录 高速信号的眼图、加重、均衡眼图加重均衡线性均衡器CTLE判决反馈均衡器DFE 高速信号的眼图、加重、均衡 眼图 通常用示波器观察接收信号波形的眼图来分析码间串扰和噪声对系统性能的影响&#xff0c;从而估计系统优劣程度&#xff0c;因而眼图分析是高速互连系统信号完整…...

2024年PMP考前冲刺必背的学习笔记,整理好给你!

项目的四大特点:临时性、独特性、变革驱动性和创造商业价值。 项目管理&#xff1a;将知识、技能、工具与技术应用于项目活动&#xff0c;以满足项目的要求 Pestle&#xff1a;P政治&#xff0c;E经济&#xff0c;S社会&#xff0c;T技术&#xff0c;L法律&#xff0c;E环境 …...

增加服务器带宽可以提高资源加载速度吗?

答案是可以的 &#xff0c;增加服务器带宽通常能够提高资源加速速度。带宽是服务器与互联网之间传输数据的速率&#xff0c;它决定了在单位时间内可以传输的数据量。以下是增加带宽如何提高资源加速速度的几个方面&#xff1a; 1.更快的数据传输&#xff1a;带宽增加后&#xf…...

汽车EDI: NAVISTAR EDI对接

Navistar International Corporation 是一家美国商用车辆制造公司&#xff0c;总部位于伊利诺伊州的Lisle。公司以生产中型和重型卡车、公共汽车、柴油发动机和底盘闻名&#xff0c;其产品广泛应用于运输、建筑、和农业等行业。Navistar 的历史可以追溯到1831年&#xff0c;由国…...

【Word多级标题完整设置】设置各级标题样式将多级列表链接到各级标题样式中

Word多级标题完整设置 一、设置各级标题样式主标题样式设置中英文字体、字形以及字号设置段落设置&#xff08;缩进、间距和行距&#xff09; 一级标题样式设置中英文字体、字形以及字号设置段落设置&#xff08;缩进、间距和行距&#xff09; 二级标题样式设置中英文字体、字形…...

不同分辨率下vue页面的高度自适应

1. 使用视口单位 .element { height: 100vh; /* 使得元素高度等于视口高度的100% */ /* 可以减去一部分高度以适应页眉或页脚 */ height: calc(100vh - 100px); } 2. 使用百分比&#xff08;%&#xff09;高度 .parent { height: 100vh; /* 父元素高度等于视口高度 */…...

“野生钢铁侠 “ 稚晖君一连亮出5 款智元人形机器人,地表最强!

打麻将、拆快递、纽扣穿针&#xff0c;还能做 30KG 重物提拉&#xff01; 沉寂一年&#xff0c;稚晖君带着他的二代机器人全家桶重磅回归&#xff0c;秀出的各种新技能令人眼前一亮。 智东西 8 月 18 日报道&#xff0c;今日&#xff0c;" 野生钢铁侠 " 稚晖君一连亮…...

JSON Web Token (JWT): 理解与应用

JWT&#xff08;JSON Web Token&#xff09;是一种开放标准&#xff08;RFC 7519&#xff09;&#xff0c;它定义了一种紧凑且自包含的方式&#xff0c;用于在各方之间以JSON对象的形式安全地传输信息。JWT通常用于身份验证和授权目的&#xff0c;因为它可以使用JSON对象在各方…...

LeetCode面试题Day12|LC209 长度最小的子数组、LC30 串联所有单词的子串

题目一&#xff1a; 指路&#xff1a; . - 力扣&#xff08;LeetCode&#xff09;209 长度最小的子数组 思路与分析&#xff1a; 滑动窗口&#xff0c;目的在于降低算法的时间复杂度&#xff0c;每次只维护一定长度的数组而非原数组的全部元素。那么既然需要长度&#xff0…...

【开端】JAVA泛型类的使用

一、这是一个类 public class CommonVo<D extends CommonDao> implements Serializable { 我们来探讨一样 CommonVo<D extends CommonDao> 这个尖括号里到底能写啥。 首先这是一个泛型类型D &#xff0c;D类继承了CommonDao&#xff0c;说明尖括号里只要放入一…...

mp3转换器免费有哪些?6个音频转换器助你一键转换各种音频

音乐如同生活的调味剂&#xff0c;让每一个平凡瞬间都跃动着不凡的旋律。 但有时候&#xff0c;当你想把这些歌曲放到你的设备上时&#xff0c;却发现格式不兼容&#xff0c;无法播放。 别担心&#xff01;接下来&#xff0c;我们将介绍几款免费mp3转换工具&#xff0c;它们能…...

力扣爆刷第174天之TOP200五连刷136=140(最小k数、字典序、跳跃游戏)

力扣爆刷第174天之TOP200五连刷136140&#xff08;最小k数、字典序、跳跃游戏&#xff09; 文章目录 力扣爆刷第174天之TOP200五连刷136140&#xff08;最小k数、字典序、跳跃游戏&#xff09;一、LCR 159. 库存管理 III二、450. 删除二叉搜索树中的节点三、440. 字典序的第K小…...

蚁群算法原理与实战(Python、MATLAB、C++)

蚁群算法 1.蚁群算法来源 蚁群算法&#xff08;Ant Colony Optimization&#xff0c;简称ACO&#xff09;是一种模拟自然界中蚂蚁寻找食物路径行为的优化算法&#xff0c;主要用于解决组合优化问题。它的灵感来源于意大利学者Marco Dorigo在1992年提出的蚂蚁系统模型。 蚁群算…...

HTML静态网页成品作业(HTML+CSS)——非遗阜阳剪纸介绍设计制作(1个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有1个页面。 二、作品演示 三、代…...

如何做萤石开放平台的物联网卡定向?

除了用萤石自带的4G卡外&#xff0c;我们也可以自己去电信、移动和联通办物联网卡连接萤石云平台。 1、说在前面 注意&#xff1a;以下流程必须全部走完&#xff0c;卡放在设备上才能连接到萤石云平台。 2、大致流程 登录官网→下载协议→盖章&#xff08;包括骑缝章&#…...

ptrade排坑日记——定时任务执行后,文件权限会变化。

前言 今天要和大家分享的是使用ptrade的定时任务过后&#xff0c;执行的时候&#xff0c;文件权限会发生变化&#xff01; 一、问题描述 定时任务执行后&#xff0c; /home/fly/data/fundamentals_daily/all.pickle、/home/fly/data/valuation_new/all.pickle 文件权限会从…...

煤矸石自动分离机设计【论文+CAD图纸】

煤矸石作为煤炭开采与洗选过程中产生的固体废弃物&#xff0c;其成分复杂、粒度分布不均&#xff0c;传统人工分选效率低且精度难以保证。煤矸石自动分离机的设计以机械结构优化与物料特性分析为核心&#xff0c;通过多级筛分与智能识别技术的结合&#xff0c;实现煤矸石与煤炭…...

如何快速实现文件格式伪装?apate工具完整使用指南

如何快速实现文件格式伪装&#xff1f;apate工具完整使用指南 【免费下载链接】apate 简洁、快速地对文件进行格式伪装 项目地址: https://gitcode.com/gh_mirrors/apa/apate 在当今数字时代&#xff0c;文件格式伪装技术已经成为保护数据隐私和突破平台限制的重要工具。…...

基于S7-200控制的自动洗车系统 本设计包括设计报告,PLC组态仿真,I/O接口,带注释程序...

基于S7-200控制的自动洗车系统 本设计包括设计报告&#xff0c;PLC组态仿真&#xff0c;I/O接口&#xff0c;带注释程序pdf版&#xff0c;接线图&#xff0c;控制电路图&#xff0c;主电路图,PLC接线图&#xff0c;顺序功能图 总体设计 系统有自动和手动模式&#xff0c;选择手…...

2025届最火的五大AI学术方案实测分析

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek AI写作工具&#xff0c;是借助自然语言处理技术所开发出来的智能软件&#xff0c;它可以辅助…...

eos低开视图查询,筛选空字符的数据,事件中的查询条件怎么写?

问题描述: eos低开视图查询&#xff0c;筛选空字符的数据&#xff0c;事件中的查询条件怎么写&#xff1f; 解决方案: 查询空字符串&#xff0c;可在查询条件中使op"empty"&#xff0c;参考示例如下。 this.finalCondition.and.items.push({propertyName: "n…...

AutoCAD数据处理的.NET解决方案:ACadSharp全功能指南

AutoCAD数据处理的.NET解决方案&#xff1a;ACadSharp全功能指南 【免费下载链接】ACadSharp C# library to read/write cad files like dxf/dwg. 项目地址: https://gitcode.com/gh_mirrors/ac/ACadSharp 在工程数字化时代&#xff0c;如何高效处理AutoCAD文件数据已成…...

【ABAP】客转供 客户转供应商 cl_md_bp_maintain=>maintain 创建供应商

报错&#xff1a;未分配客户/供应商&#xff0c;您无法传输客户/供应商数据 这是因为如果创建的时候是作为客户的&#xff0c; 后面想要创建为供应商&#xff0c;所以调用的供应商创建/修改接口。 但是这时候&#xff0c;LFA1里面是没有供应商编号的&#xff0c;只有BUT000里面…...

3分钟搞定GitHub加速:国内开发者必备的免费终极解决方案

3分钟搞定GitHub加速&#xff1a;国内开发者必备的免费终极解决方案 【免费下载链接】Fast-GitHub 国内Github下载很慢&#xff0c;用上了这个插件后&#xff0c;下载速度嗖嗖嗖的~&#xff01; 项目地址: https://gitcode.com/gh_mirrors/fa/Fast-GitHub 还在为GitHub龟…...

告别CNN!用Mask2Former+Swin Transformer实战图像分割,保姆级代码解析

从CNN到Transformer&#xff1a;Mask2Former与Swin Transformer在图像分割中的实战指南 图像分割技术正在经历一场静默的革命。传统卷积神经网络&#xff08;CNN&#xff09;主导的时代逐渐让位于基于Transformer的新型架构&#xff0c;这种转变不仅仅是技术栈的更新&#xff…...

新手入门指南:在快马平台上通过openclaw切换模型理解ai编程差异

作为一个刚开始接触AI编程的新手&#xff0c;我最近在InsCode(快马)平台上尝试了openclaw切换模型的功能&#xff0c;发现这个功能特别适合用来理解不同AI模型的代码生成特点。整个过程就像有个耐心的老师在旁边手把手教学&#xff0c;完全不需要任何编程基础就能上手。下面我就…...