1 Star 4 Fork 3

bomber / spring-cloud-starter-rocketmq

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
WTFPL

spring-cloud-starter-rocketmq

一、快速开始

0.前置操作

下载此项目,使用idea打开后点击右边maven进行生命周期的install操作。

或者

在控制台输入命令。

mvn clean install

1.引入依赖

<dependency>
    <groupId>com.uhu</groupId>
    <artifactId>spring-cloud-starter-rocketmq</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>

2.添加yaml配置

rocketmq:
  serverIp: 192.168.191.129
  port: 9876
  consumer-group: mygroup
  send-timeout: 7000

3.创建消费者配置Bean

package com.uhu.cloud.demo2.biz.mq;

import com.uhu.cloud.demo2.biz.dal.dataobject.Course;
import com.uhu.rocketmq.manager.RocketManager;
import com.uhu.rocketmq.message.SimpleMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;

/**
 * @Author Bomber
 * @Description 消息消费者
 * @Date 2023/5/11 16:29
 * @Version 1.0
 */

@Component
public class Consumers {

    @Autowired
    private RocketManager rocketManager;

    @PostConstruct
    public void init() {
        /* 
        * 方式1:创建一个消息主题,且进行消费
        *
        * 参数1:主题
        * 参数2:标签表达式,默认为*
        * 参数3:消费者
        * */
        System.out.println("创建【checkCourse】主题");
        rocketManager.createTopic("checkCourse", null, (msg) -> {
            System.out.println("选择了课程:" + SimpleMessage.getContent(msg, Course.class));
        });
        
        /*
         * 方式2:创建一个消息主题,且仅作为生产
         * 
         * 参数1:主题
         * */
        System.out.println("创建【checkOther】主题");
        rocketManager.createTopic("checkOther");
    }
}

4.发送消息

public class Controller {
    //注入bean
    @Autowired
    private MessageSender messageSender;

    public void sendMessage() {
        // 创建消息
        SimpleMessage<Course> courseSimpleMessage = new SimpleMessage<>("checkCourse", "tag1", new Course(1L, "语文课"));

        // 发送消息
        messageSender.sendMessage(courseSimpleMessage);
    }
}

二、样例

1.消息内容实体对象

package com.uhu.cloud.demo2.biz.dal.dataobject;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @Author Bomber
 * @Description 课程
 * @Date 2023/5/11 16:34
 * @Version 1.0
 */

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Course {
    private Long id;
    private String name;
}

2.配置主题

package com.uhu.cloud.demo2.biz.mq;

import com.uhu.cloud.demo2.biz.dal.dataobject.Course;
import com.uhu.rocketmq.manager.RocketManager;
import com.uhu.rocketmq.message.SimpleMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;

/**
 * @Author Bomber
 * @Description 消息消费者
 * @Date 2023/5/11 16:29
 * @Version 1.0
 */

@Component
public class Consumers {

    @Autowired
    private RocketManager rocketManager;

    @PostConstruct
    public void init() {
        // 创建一个消息课程,且进行打印输出消费
        /*
        * 参数1:主题
        * 参数2:标签表达式,默认为*
        * 参数3:消费者
        * */
        System.out.println("创建【checkCourse】主题");
        rocketManager.createTopic("checkCourse", null, (msg) -> {
            System.out.println("选择了课程:" + SimpleMessage.getContent(msg, Course.class));
        });
    }
}

3.发送请求后发送消息

@GetMapping("/send")
public void send() {

    // ...中间业务省略
	// 编辑消息简单消息(内部封装课程对象)
	SimpleMessage<Course> courseSimpleMessage = new SimpleMessage<>("checkCourse", "tag1", new Course(1L, "语文课"));
    
    // 发送简单消息
	messageSender.sendMessage(courseSimpleMessage);
}

三、关于SimpleMessage类

简单消息类型,可携带可序列化对象

package com.uhu.rocketmq.message;

import com.alibaba.fastjson2.JSONObject;
import org.apache.rocketmq.common.message.Message;

import java.nio.charset.StandardCharsets;

/**
 * @Author Bomber
 * @Description 简单消息
 * @Date 2023/5/11 16:17
 * @Version 1.0
 */
public class SimpleMessage<T> extends Message {

    /**
     * 简单消息
     * @param topic 主题
     * @param tags 标签
     * @param content 内容
     */
    public SimpleMessage(String topic, String tags, T content) {
        
    }

    /**
     * 获取消息内容对象
     * @param msg 消息
     * @param contentClass 消息内容类型
     * @param <T>
     * @return
     */
    public static <T> T getContent(Message msg, Class<T> contentClass) {
    }
}

提供能力:

  • 静态方法SimpleMessage.getContent(...):可抽取消息体中携带的消息内容对象

其他问题

SpringBoot高版本可能出现无法自动注入bean的问题,可以在启动类上添加注解@ComponentScan(basePackages={"你自己的包", "com.uhu.rocketmq"})解决这个问题

DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE Version 2, December 2004 Copyright (C) 2004 Sam Hocevar <sam@hocevar.net> Everyone is permitted to copy and distribute verbatim or modified copies of this license document, and changing it is allowed as long as the name is changed. DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. You just DO WHAT THE FUCK YOU WANT TO.

简介

👟简单的rocketmq的starter工具,上手难度【1⭐】 展开 收起
Java
WTFPL
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/mySpaceHome_tonly_pam/spring-cloud-starter-rocketmq.git
git@gitee.com:mySpaceHome_tonly_pam/spring-cloud-starter-rocketmq.git
mySpaceHome_tonly_pam
spring-cloud-starter-rocketmq
spring-cloud-starter-rocketmq
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891