把 FolkMQ 内嵌到 SpringBoot2 项目里(比如 “诺依” 啊)
FolkMQ (消息中间件)支持内嵌、单机、集群、多重集群等多种部署方式。
- 内嵌版,就相当于 H2 或 SQLite 数据库一样。给一些小项目(或者特别需求)带来了方便。
- 大项目,则可以使用独立部署的 “单机版” 或 “集群版”
内嵌个消息中间件,体积会不会太大啦?!!不会,单机版只有9Mb,内嵌版才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</artifactId> <version>2.8.3</version> </dependency> <dependency> <groupId>org.noear</groupId> <artifactId>folkmq-embedded</artifactId> <version>1.5.2</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 冲突(folkmq 控制台的 token) server.session.state.jwt.name: FOLKMQ-TOKEN #控制台账号密码 folkmq: admin: admin
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-springboot2

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
夜莺 v7.beta10 发版,告警恢复时可以拿到恢复时的值了
Prometheus 生态的原生做法,由于阈值是放在 promql 中的,恢复时的消息中难以拿到恢复时的值,夜莺 v7.0.0.beta10 版本开始,提供了一种较为简单的内置方式,解决这个问题。下面我们就来看一下如何实现这个能力。 升级方法 从 v6 版本开始,程序自动创建表结构,所以 v6、v7 的各个小版本之间升级,相对容易,整体逻辑是: 1.备份,包括数据库、二进制、配置文件、integrations目录,以防万一 2.下载新版本解压,修改配置文件中的数据库连接地址、redis连接地址、时序库连接地址等个性化信息 3.停掉老版本,启动新版本(建议新老版本使用不同的安装目录,都保留不删,建个软链指向当前使用的版本) 拿到恢复时的值的原理 夜莺的告警逻辑是拿着规则中的 promql 去周期性查询,如果查不到数据就认为是正常的,如果查到了数据,就认为有触发了阈值的异常数据,进而生成告警事件。从这里逻辑可以看出,恢复的时候,promql 查不到数据,所以也就难以拿到恢复的时候的值了。 有两个办法可以解决: 不要把阈值放到 promql 中了,promql 查询原始数据,然后在告警引擎里...
- 下一篇
阿里通义千问 Qwen2 大模型开源发布
阿里通义千问Qwen2 大模型现已发布,并在 Hugging Face和 ModelScope上同步开源。 https://github.com/QwenLM/Qwen https://huggingface.co/Qwen https://modelscope.cn/organization/qwen Qwen2系列模型是Qwen1.5系列模型的重大升级。包括了5个尺⼨的预训练和指令微调模型,:Qwen2-0.5B、Qwen2-1.5B、Qwen2-7B、Qwen2-57B-A14B以及Qwen2-72B。 在中⽂英语的基础上,训练数据中增加了27种语⾔相关的⾼质量数据;上下文长度支持进一步扩展,最⾼达到128K tokens(Qwen2-72B-Instruct) 。 公告称,Qwen2 相⽐Qwen1.5 在⼤规模模型实现了⾮常⼤幅度的效果提升。在针对预训练语⾔模型的评估中,对⽐当前最优的开源模型,Qwen2-72B在包括⾃然语⾔理解、知识、代码、数学及多语⾔等多项能⼒上均显著超越当前领先的模型,如Llama-3-70B以及Qwen1.5最⼤的模型Qwen1.5-110B。这得益...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS8安装Docker,最新的服务器搭配容器使用
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题