可以把 FolkMQ 内嵌到 SpringBoot3 项目里(可内嵌的消息中间件,纯血国产)
之前发了《把 FolkMQ 内嵌到 SpringBoot2 项目里(比如 “诺依” 啊)》。有人说都淘态了,有什么好内嵌的。。。所以再发个 SpringBoot3
FolkMQ 是一个 “纯血国产” 的消息中间件。支持内嵌、单机、集群、多重集群等多种部署方式。
- 内嵌版,就相当于 H2 或 SQLite 数据库一样。给一些小项目(或者特别需求)带来了方便。
- 大项目,则可以使用独立部署的 “单机版” 或 “集群版”
内嵌个消息中间件,体积会不会太大啦?!!不会,才7Mb。好小的!
1、了解 FolkMQ 内嵌版
FolkMQ 内嵌版(带 Web 控制台界面的),体积增加 7Mb,就可以附加完整消息中间件的能力喽。比如你在用 “诺依” 开发个小项目,需要消息中间件,但是又不想独立部署。这就很适合呢!
- 内嵌版与单机板,功能一模一样
- 控制台界面是基于 Solon 框架 开发的,非常小巧。(可以用宿主项目的端口,也可以独立端口)
- 可以内嵌到 jFinal,Solon,SpringBoot2,SpringBoot3,Vert.X 等框架里
说起来 Solon 真是中间件的控制台良配,又小又强又可以内嵌。太爱了!
2、怎么集成呐?
此例,我们的控制台使用宿主项目的 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 public class FolkMqConfig { @PostConstruct public void start() { //启动 solon Solon.start(FolkMqConfig.class, new String[]{}); } @PreDestroy public void stop() { 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 来控制它
更多的配置,可以见官网的:配置参考
# 如果使用 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
3、看看内嵌的效果
项目运行后,可以通过 /folkmq/
来访问控制台。
4、然后测试下
消息端口,是控制台端口 + 10000。测试,我们就发10条普通消息试试。
public class ClientTest { public static void main(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)); } } }
测试效果:
5、完整的示例代码
https://gitee.com/noear/folkmq-embedded-examples/tree/main/folkmq-embedded-springboot3

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
mybatis-mp 高级用法:ORM+SQL 模板,真正意义实现 ORM!!!
目前ORM 以JPA PLUS为首的ORM,遇到稍微复杂的、或者数据库特性 函数时通常需要 自己写sql ,或代码中,或xml中,这就有点难受了 1:有没有好的办法? mybatis-mp的做法 就是 ORM+SQL模板,SQL模板不仅仅是sql字符串,它还帮你替换关系的信息:列 SysUserRoleAutoSelectVo vo = QueryChain.of(sysUserMapper) .select(SysUserRoleAutoSelectVo.class) .selectWithFun(SysRole::getId, c -> CmdTemplate.create(" RANK() OVER( ORDER BY {0}) ", c).as("RANK2")) .selectWithFun(SysRole::getId, c -> CmdTemplate.create(" RANK() OVER( ORDER BY {0}) as RANK3", c)) .from(SysUser.class) .join(SysUser.class, SysRo...
- 下一篇
重磅!首个跨平台的通用 Linux 端间互联组件 Klink 在 openKylin 开源
随着智能终端设备的普及,多个智能终端设备之间的互联互通应用场景日益丰富,多设备互联互通应用场景需要开发者单独实现通讯协议。因此,为解决跨平台互联互通问题,由openKylin社区理事单位麒麟软件旗下星光麒麟团队成立的Connectivity SIG经过研究探索,打造了一个跨平台的通用Linux端间互联组件—Klink。 一、什么是Klink Klink是由openKylin社区Connectivity SIG—星光麒麟团队于2021年开始打造的端间互联组件,解耦了软总线模块对多系统平台的应用,实现了对跨平台软总线协议的兼容,包括鸿蒙软总线4.x协议等,使包括openKylin开源操作系统、银河麒麟桌面操作系统等在内的各种主流Linux发行版皆可跨平台互联互通,大幅扩展了生态边界,为我国基础软件健康开放发展做出了贡献。其基本架构如下图所示: 二、Klink优势 openKylin社区理事单位麒麟软件“星光麒麟”万物智联操作系统,以“弹性扩展、智能互联、内生安全、统一框架”的产品特性,针对国家、行业、企业和个人数字化应用需求,开启了面向全场景的新一代操作系统创新之路。其中智能互联特性就是以...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7设置SWAP分区,小内存服务器的救世主
- Mario游戏-低调大师作品
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- 2048小游戏-低调大师作品
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7,CentOS8安装Elasticsearch6.8.6