大数跨境
0
0

SpringBoot3+国产FolkMQ!5行代码搞定消息中间件

SpringBoot3+国产FolkMQ!5行代码搞定消息中间件 终码一生
2025-08-20
0
点击“终码一生”,关注,置顶公众号
每日技术干货,第一时间送达!
FolkMQ 是一个 “纯血国产” 的消息中间件。支持内嵌、单机、集群、多重集群等多种部署方式。
  • 内嵌版,就相当于 H2 或 SQLite 数据库一样。给一些小项目(或者特别需求)带来了方便。
  • 大项目,则可以使用独立部署的 “单机版” 或 “集群版”
内嵌个消息中间件,体积会不会太大啦?!!不会,才7Mb。好小的!
01
了解 FolkMQ 内嵌版
FolkMQ 内嵌版(带 Web 控制台界面的),体积增加 7Mb,就可以附加完整消息中间件的能力喽。
比如你在用 “诺依” 开发个小项目,需要消息中间件,但是又不想独立部署。这就很适合呢!
  • 内嵌版与单机板,功能一模一样
  • 控制台界面是基于 Solon 框架 开发的,非常小巧。(可以用宿主项目的端口,也可以独立端口)
  • 可以内嵌到 jFinal,Solon,SpringBoot2,SpringBoot3,Vert.X 等框架里
说起来 Solon 真是中间件的控制台良配,又小又强又可以内嵌。太爱了!
02
怎么集成呐?
此例,我们的控制台使用宿主项目的 HTTP 端口。所以需要与 SpringBoot2 的 Servlet 能力对接。
a) 引入两个包
依赖包
说明
solon.web.servlet
负责与 SpringBoot2 的 Servlet 能力对接,为控制台提供支持
folkmq-embedded
我们的主角,FolkMQ 内嵌版
<dependency>
    <groupId>org.noear</groupId>
    <artifactId>solon.web.servlet.jakarta</artifactId>
    <version>2.8.3</version>
</dependency>

<dependency>
    <groupId>org.noear</groupId>
    <artifactId>folkmq-broker-embedded</artifactId>
    <version>1.7.1</version>
</dependency>
b) 添加一个配置类 FolkMqConfig,就集成好了
专门安排它一个包名“folkmq”,可以缩小 solon 的扫描范围。因为 solon 也是个容器型的框架嘛(只是比较小巧)。
package demoapp.folkmq;

@Configuration
publicclassFolkMqConfig{
    @PostConstruct
    publicvoidstart(){
        //启动 solon
        Solon.start(FolkMqConfig.classnewString[]{});
    }

    @PreDestroy
    publicvoidstop(){
        if (Solon.app() != null) {
            //停止 solon(根据配置,可支持两段式安全停止)
            Solon.stopBlock(false, Solon.cfg().stopDelay());
        }
    }

    @Bean
    public FilterRegistrationBean folkmqAdmin(){
        //通过 Servlet Filter 实现 http 能力对接
        FilterRegistrationBean<SolonServletFilter> filter = new FilterRegistrationBean<>();
        filter.setName("SolonFilter");
        filter.addUrlPatterns("/folkmq/*");
        filter.setFilter(new SolonServletFilter());
        return filter;
    }
}
c) 然后,再加个配置文件 folkmq.yml 来控制它
更多的配置,可以见官网的:
https://folkmq.noear.org/article/773
# 如果使用 servelt 则使用与 sprongboot 相同的等口
server.port:8080

# 避免与其它 token 冲突
server.session.state.jwt.name:FOLKMQ-TOKEN

# 消息控制台账号密码
folkmq.admin:admin
# 消息传输协议(tcp 或 ws)
folkmq.schema:tcp
# 消息传输端口(默认为 server.port + 10000)
folkmq.transport.port:0
03
看看内嵌的效果
项目运行后,可以通过 /folkmq/ 来访问控制台。
图片
04
然后测试下
消息端口,是控制台端口 + 10000。测试,我们就发10条普通消息试试。
publicclassClientTest{
    publicstaticvoidmain(String[] args)throws Exception {
        MqClient client = FolkMQ.createClient("folkmq://localhost:18080")
                .nameAs("demoapp")
                .connect();

        //订阅消息
        client.subscribe("demo.topic", message -> {
            System.out.println(message);
        });

        for (int i = 0; i < 10; i++) {
            //发布消息
            client.publish("demo.topic"new MqMessage("hello" + i));
        }
    }
}
测试效果:
图片
05
完整的示例代码
地址:https://gitee.com/noear/folkmq-embedded-examples/tree/main/folkmq-embedded-springboot3
END
PS:防止找不到本篇文章,可以收藏点赞,方便翻阅查找哦。



往期推荐



IntelliJ IDEA 2025.2 最新激活教程,一键激活2099

如何优雅的实现在线人数统计功能?

Http 接口对接太繁琐?试试 UniHttp 框架吧!简简单单~

还在手动搭 Maven 多模块?这款IDEA插件让我效率提升10倍

巧用 MyBatis Plus 实现数据权限控制...

3s → 30ms!SpringBoot树形结构“开挂”实录:一次查询提速100倍


【声明】内容源于网络
0
0
终码一生
开发者聚集地。分享Java相关开发技术(JVM,多线程,高并发,性能调优等),开源项目,常见开发问题和前沿科技资讯!
内容 1876
粉丝 0
终码一生 开发者聚集地。分享Java相关开发技术(JVM,多线程,高并发,性能调优等),开源项目,常见开发问题和前沿科技资讯!
总阅读676
粉丝0
内容1.9k