RocketMQ 09 SpringBoot 整合

RocketMQ 09 SpringBoot 整合

目前还没有官方的starter

pom.xml

		<dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-common</artifactId><version>4.6.1</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.rocketmq/rocketmq-client --><dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-client</artifactId><version>4.6.1</version></dependency>

Producer配置

Config配置类

用于在系统启动时初始化producer参数并启动

package com.mashibing.rmq.controller;import org.apache.rocketmq.client.exception.MQClientException;
import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class MQConfig {public static final Logger LOGGER = LoggerFactory.getLogger(MQConfig.class);@Value("${rocketmq.producer.groupName}")private String groupName;@Value("${rocketmq.producer.namesrvAddr}")private String namesrvAddr;@Beanpublic DefaultMQProducer getRocketMQProducer() {DefaultMQProducer producer;producer = new DefaultMQProducer(this.groupName);producer.setNamesrvAddr(this.namesrvAddr);try {producer.start();System.out.println("start....");LOGGER.info(String.format("producer is start ! groupName:[%s],namesrvAddr:[%s]", this.groupName,this.namesrvAddr));} catch (MQClientException e) {LOGGER.error(String.format("producer is error {}", e.getMessage(), e));}return producer;}
}

Service消息发送类

package com.mashibing.rmq.service;import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.common.message.Message;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class MQService {@AutowiredDefaultMQProducer producer;public Object sendMsg(String string) {for (int i = 0; i < 1; i++) {Message message = new Message("tpk02", "xx".getBytes());try {return producer.send(message);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();} }return null;}
}

配置文件

spring.application.name=mq01
rocketmq.producer.namesrvAddr=192.168.150.131:9876
rocketmq.producer.groupName=${spring.application.name}
server.port=8081

Consumer配置

Config配置类

package com.mashibing.rmq.controller;import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class MQConfig {public static final Logger logger = LoggerFactory.getLogger(MQConfig.class);@Value("${rocketmq.consumer.namesrvAddr}")private String namesrvAddr;@Value("${rocketmq.consumer.groupName}")private String groupName;@Value("${rocketmq.consumer.topics}")private String topics;@Beanpublic DefaultMQPushConsumer getRocketMQConsumer() throws Exception {DefaultMQPushConsumer consumer = new DefaultMQPushConsumer(groupName);consumer.setNamesrvAddr(namesrvAddr);consumer.subscribe(topics, "*");consumer.registerMessageListener(new MyMessageListener() );consumer.start();return consumer;}
}

消息处理类

package com.mashibing.rmq.controller;import java.util.List;import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext;
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus;
import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently;
import org.apache.rocketmq.common.message.MessageExt;public class MyMessageListener implements MessageListenerConcurrently {@Overridepublic ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext context) {System.out.println("来啦!!22!");for (MessageExt msg : msgs) {System.out.println(new String(msg.getBody()));;}return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;}
}

配置文件

spring.application.name=mq02
rocketmq.producer.namesrvAddr=192.168.150.131:9876
rocketmq.producer.groupName=${spring.application.name}rocketmq.consumer.topics=tpk02

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/819984.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小红书2020校招算法笔试题卷一 编程题no.2 笔记精选

题目 薯队长写了n篇笔记&#xff0c;编号从1~n,每篇笔记都获得了不少点赞数。 薯队长想从中选出一些笔记&#xff0c;作一个精选集合。挑选的时候有两个规则&#xff1a; 1.不能出现连续编号的笔记。 2.总点赞总数最多 如果满足1&#xff0c;2条件有多种方案&#xff0c;…

视频怎么用二维码来分享?手机扫码看视频更方便

怎么把制作的视频快速以二维码的形式分享给其他人呢&#xff1f;视频是很多内容重要的一种展示方式&#xff0c;为了能够让其他人更加方便的查看视频内容&#xff0c;现在很多人会选择视频转二维码的方式来提供预览。将视频存储到云端然后通过扫码来调取&#xff0c;不仅减少了…

DHCP小实验

实验要求&#xff1a; 看拓扑有两个网段则我们首先需要对200.1.1.0/26进行子网划分&#xff0c;划分为两个子网&#xff0c;为200.1.1.0/27和200.1.1.32/27 我门就可以一边一个网段了&#xff0c;左边为200.1.1.0/27&#xff0c;右边为200.1.1.32/27 1、配置PC1&#xff0c;2…

2024蓝桥杯——宝石问题

先展示题目 声明 以下代码仅是我的个人看法&#xff0c;在自己考试过程中的优化版&#xff0c;本人考试就踩了很多坑&#xff0c;我会—一列举出来。代码可能很多&#xff0c;但是总体时间复杂度不高只有0(N) 函数里面的动态数组我没有写开辟判断和free&#xff0c;这里我忽略…

LinuxShell编程中source和export命令

目录 1.source命令1.1.POSIX模式1.1.1.验证POSIX模式执行情况 1.2.source命令表示形式的历史由来1.3.source命令解读1.3.1.在当前的shell环境中1.3.2.source命令的常用用途1.3.3.从文件名中读取并执行命令 2.export命令2.1.显示当前终端已经导出的函数和环境变量2.2.验证变量和…

Python异常处理机制详解及示例

Python异常处理机制详解及示例 在编程过程中&#xff0c;异常处理是一项至关重要的技能。Python作为一种功能强大的编程语言&#xff0c;提供了一套完善的异常处理机制&#xff0c;使得程序在遇到错误或异常情况时能够优雅地处理&#xff0c;而不是直接崩溃。本文将详细介绍Py…

MySQL——基础

SQL 全称 Structured Query Language&#xff0c;结构化查询语言。操作关系型数据库的编程语言&#xff0c;定义了一套操作关系型数据库统一标准 。 SQL 通用语法 SQL语句可以单行或多行书写&#xff0c;以分号结尾。SQL语句可以使用空格/缩进来增强语句的可读性。MySQL数据库…

一文速览铁威马TOS 6全新“文件管理”

TOS 6 Beta已经上线一段时间了&#xff0c;各位铁粉用着怎么样呢&#xff1f;今天就和大家分享&#xff0c;TOS 6全新文件管理。 为了向用户提供更流畅、更便捷的文件管理体验&#xff0c;铁威马的研发团队积极借鉴了Windows OS和Mac OS在文件管理方面的优点&#xff0c;投入巨…

【LeetCode刷题记录】41.缺失的第一个正数

41 缺失的第一个正数 给你一个未排序的整数数组 nums &#xff0c;请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,0] 输出&#xff1a;3 解释&#xff1a;范围 [1…

设置coredump存储路径

设置coredump存储路径需要配置/proc/sys/kernel/core_pattern中的路径&#xff0c;一般情况下如下操作&#xff1a; echo /home/core-%e-%p >/proc/sys/kernel/core_pattern 但是这种方法在有的系统中会设置失败。例如ubuntu中。 因为ubuntu中默认开启了系统错误诊断&#x…

Redis实现持久化和集群的搭建

一、Redis的持久化方案 1&#xff09;RDB持久化 RDB&#xff08;Redis Database Backup file&#xff09;&#xff0c;Redsi数据备份文件或Redis数据快照。 把内存中的所有快照文件称为RDB文件&#xff0c;默认是保存在当前运行目录。 RDB持久化在四种情况下会执行&#xff…

[gvim] 操作

1. 删除操作 behaviorcode删除高亮内容:%s//g删除高亮内容所在行:g//d只删除匹配内容:%s/<pattern>//删除匹配内容所在的行:g/<pattern>/d只保留匹配内容的行:v/<pattern>/d 2. 替换操作 behaviorcode全局替换:%s/src_word/tgt_word/g替换n-m行关键字:n,m…

【echarts】echarts入门教程,学会如何编写echarts代码

echarts模板 使用&#xff01;为html来创建一个模板。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><titl…

Open3D (C++) 点云投影至主成分空间

目录 一、算法原理二、代码实现三、结果展示四、相关连接Open3D (C++) 点云投影至主成分空间由CSDN点云侠原创,爬虫自重。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、算法原理 p r o j

windeployqt工具

windeployqt是Qt SDK提供的一个实用工具&#xff0c;专为Windows平台设计&#xff0c;用于自动部署Qt应用程序所需的所有依赖库和组件。当你构建了一个Qt应用程序并希望在没有安装Qt开发环境的计算机上运行时&#xff0c;windeployqt工具能够帮你复制和收集应用程序运行所需的动…

原始部落版本潮玩宇宙小程序定制大逃杀游戏APP开发H5游戏

原始部落版本潮玩宇宙小程序定制大逃杀游戏APP开发H5游戏 潮玩宇宙小程序定制大逃杀游戏APP开发H5游戏 潮玩宇宙大逃杀小游戏模块成品源码&#xff0c;可嵌入任何平台系统&#xff0c;增加用户粘性&#xff0c;消除泡沫&#xff0c;短视频直播引流。 玩家选择一间房间躲避杀手…

第二期书生浦语大模型训练营第五次作业

部署LMDeploy并对话 配置LMDeploy运行环境 安装好环境&#xff0c;并成功激活 使用transformer运行大模型 使用LMDeploy模型量化(lite) KV8量化和W4A16量化。KV8量化是指将逐 Token&#xff08;Decoding&#xff09;生成过程中的上下文 K 和 V 中间结果进行 INT8 量化&#…

lua的字符串和Table类型实现

字符串 实现在lstring.c中。 字符串类型TString定义如下&#xff1a; typedef union TString {L_Umaxalign dummy; /* ensures maximum alignment for strings */struct {CommonHeader;lu_byte reserved;unsigned int hash;size_t len;} tsv; } TString;字符串内容紧随其后&a…

类方法,实例方法,静态方法对比

Date: 2024.04.16 实例方法&#xff1a;如果某一个方法需要访问到对象的实例属性&#xff0c;可以把这个方法封装成一个实例方法。 类方法&#xff1a;如果某一个方法不需要访问对象的实例属性&#xff0c;但是需要访问到类的类属性&#xff0c;这个时候就可以考虑把这个方法封…

Qt如何编写生成后事件

我们都知道VS能编写生成后事件&#xff0c;用于指定程序编译之后执行某些命令行&#xff0c;常见的如文件的拷贝、清理等等&#xff1b;那么&#xff0c;Qt能否支持支持在 .pro 文件中指定生成后事件呢&#xff0c;答案是肯定的。 下面是给出的一个简洁的例子&#xff1a; DEST…