百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程网 > 正文

uncode-mq 基于netty的轻量级java消息中间件

yuyutoo 2024-10-16 15:47 7 浏览 0 评论

功能特点

  1. 消息存储速度非常快速。
  2. 使用简单方便,目前只支持topic方式。
  3. 依赖java环境。

说明:目前只在部分项目中使用,欢迎学习交流。


模块架构

说明:集群由多个Group组成一个队列,每个Group由Master和Salve两个Broker组成,整体无中心架构。


部署

1 下载文件解压umq-*.tar.gz到任意目录。

2 配置信息

在conf/config.properties文件中填写相关信息。

mq.host=192.168.1.43 #本机ip
mq.port=9000 #端口
mq.replica.host=192.168.7.131 #本机作为备机的主机ip
mq.replica.fetch.size=100 #每次备份时同步的数据条数,默认30
mq.replica.fetch.interval=2 #备份同步时间间隔,默认2秒
mq.log.dir=./data #数据存储目录,默认data,不建议修改
mq.data.persistence.interval=2 #数据持久化的时间间隔,默认2秒
mq.enable.zookeeper=true #是否使用zk,集群环境下必须使用
mq.zk.connect=192.168.1.14:2181 #zk地址
mq.zk.username=admin #zk用户名
mq.zk.password=password #zk密码
mq.zk.connectiontimeout.ms=6000 #zk连接超时时间
mq.zk.sessiontimeout.ms=6000 #zk连接session过期时间
mq.zk.data.persistence.interval=6000 #zk数据同步时间,默认6秒
mq.active.broker.url= #支持转发到activemq
mq.enable.consumer=false #是否启用consumer

3 启动执行startup.sh,停止执行shutdown.sh,查看运行状态执行status.sh,查看主题信息执行info.sh,清除zk相关信息执行zkclear.sh。

4 目录

umq/conf 配置 umq/data 数据存储 umq/logs 日志 umq/lib 依赖jar


生产者

生产者为单例,必须最少执行一次connect操作,连接成功后不会重复connect。

String cfg = "file:/gitlib/uncode-mq/conf/config.properties";
Producer.getInstance().connect(cfg);
for(int i=0;i<10000;i++){
	List<Topic> list = new ArrayList<Topic>();
	Topic topic = new Topic();
	topic.setTopic("umq");
	topic.addContent("umq作者juny=>"+i);
	list.add(topic);
	Producer.getInstance().send(list);
}
或
Properties config = new Properties();
config.setProperty("mq.port", "9000");
config.setProperty("mq.zk.connect", "192.168.1.14:2181");
config.setProperty("mq.enable.zookeeper", "true");
ServerConfig serverConfig = new ServerConfig(config);
Producer.getInstance().connect(serverConfig);
for(int i=0;i<10000;i++){
	List<Topic> list = new ArrayList<Topic>();
	Topic topic = new Topic();
	topic.setTopic("umq");
	topic.addContent("umq作者juny=>"+i);
	list.add(topic);
	Producer.getInstance().send(list);
}

消费者

1 普通方式

String cfg = "file:/gitlib/uncode-mq/conf/config.properties";
Consumer.runningConsumerRunnable(cfg);
Consumer.addSubscriber(new ConsumerSubscriber(){
	//订阅主题
	@Override
	public List<String> subscribeToTopic() {
		List<String> tps = new ArrayList<String>();
		tps.add("umq");
		return tps;
	}
	
	//通知
	@Override
	public void notify(Topic topic) {
		System.err.println("consumer subscriber:"+topic.toString());
	}
	
});

2 与spring集成

@Service
public class MyConsumerSubscriber implements ConsumerSubscriber {
	public static final String CFG = "file:/gitlib/uncode-mq/conf/config.properties";
	@Autowired
	LogService logServiceImpl;
	
	public ExpressRecordConsumerSubscriber() {
		//注册订阅者
		try {
			Consumer.runningConsumerRunnable(CFG);
			Consumer.addSubscriber(this);
		} catch (ConnectException e) {
			e.printStackTrace();
		}
	}
	//订阅主题
	@Override
	public List<String> subscribeToTopic() {
		List<String> tps = new ArrayList<String>();
		tps.add("umq");
		return tps;
	}
	@Override
	public void notify(Topic topic) {
		//处理逻辑
	}
	
}

git地址:https://gitee.com/uncode/uncode-mq

相关推荐

网站建设:从新手到高手

现代化网站应用领域非常广泛,从个人形象网站展示、企业商业网站运作、到政府公益等服务网站,各行各业都需要网站建设。大体上可以归结四类:宣传型网站设计、产品型网站制作、电子商务型网站建设、定制型功能网站开...

JetBrains 推出全新 AI 编程工具 Junie,助力高效开发

JetBrains宣布推出名为Junie的全新AI编程工具。这款工具不仅能执行简单的代码生成与检查任务,还能应对编写测试、验证结果等复杂项目,为开发者提供全方位支持。根据SWEBench...

AI也能写代码!代码生成、代码补全、注释生成、代码翻译轻松搞定

清华GLM技术团队打造的多语言代码生成模型CodeGeeX近期更新了新的开源版本「CodeGeeX2-6B」。CodeGeeX2是多语言代码生成模型CodeGeeX的第二代模型,不同于一代CodeG...

一键生成前后端代码,一个36k星的企业级低代码平台

「企业级低代码平台」前后端分离架构SpringBoot2.x,SpringCloud,AntDesign&Vue,Mybatis,Shiro,JWT。强大的代码生成器让前后端代码一键生成,无需写任...

Gitee 代码托管实战指南:5 步完成本地项目云端同步(附避坑要点)

核心流程拆解:远程仓库的搭建登录Gitee官网(注册账号比较简单,大家自行操作),点击“新建仓库”,建议勾选“初始化仓库”和“设置模板文件”(如.gitignore),避免上传临时文件。...

jeecg-boot 源码项目-强烈推荐使用

JEECGBOOT低代码开发平台...

JetBrains推出全新AI编程工具Junie,强调以开发者为中心

IT之家2月1日消息,JetBrains发文,宣布推出一款名为Junie的全新AI编程工具,官方声称这款AI工具既能执行简单的代码生成与检查等基础任务,也能应对“编写测试、验证结...

JetBrains旗下WebStorm和Rider现已加入“非商用免费”阵营

IT之家10月25日消息,软件开发商JetBrains今日宣布,旗下WebStorm(JavaScript开发工具)和Rider(.NET开发工具)现已加入“非商用免费”阵营。如果...

谈谈websocket跨域

了解websocketwebsocket是HTML5的新特性,在客户端和服务端提供了一个基于TCP连接的双向通道。...

websocket调试工具

...

利用webSocket实现消息的实时推送

1.什么是webSocketwebSocket实现实现推送消息WebSocket是HTML5开始提供的一种在单个TCP连接上进行全双工通讯的协议。以前的推送技术使用Ajax轮询,浏览器需...

Flutter UI自动化测试技术方案选型与探索

...

为 Go 开发的 WebSocket 库

#记录我的2024#...

「Java基础」Springboot+Websocket的实现后端数据实时推送

这篇文章主要就是实现这个功能,只演示一个基本的案例。使用的是websocket技术。...

【Spring Boot】WebSocket 的 6 种集成方式

介绍...

取消回复欢迎 发表评论: