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

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

yuyutoo 2024-10-16 15:47 14 浏览 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

相关推荐

pdf,word,ppt,rar,mp4等等文档在线预览

背景:移动端的智能化已经被大多数人接受了,但是有时一些文件格式要在移动端打开,需要安装特定的软件才行,这个就是很多人不喜欢的,要看个文档还要下载安装一个app,实在麻烦,那能不能直接在线就预览文件呢具...

Qt/C++音视频开发69-保存监控pcm音频数据到mp4文件/监控录像

一、前言用ffmpeg做音视频保存到mp4文件,都会遇到一个问题,尤其是在视频监控行业,就是监控摄像头设置的音频是PCM/G711A/G711U,解码后对应的格式是pcm_s16be/pcm_alaw...

全能下载神器文件蜈蚣体验(全能文件王)

文件蜈蚣是一款开源免费的软件,在GitHub上公布了所有源代码,自身非常绿色环保,没有流氓后台也没广告,和莫名弹窗的同行相比,可算得上是一股清流。文件蜈蚣的使用很简单,解压后运行一次其中的exe,完成...

支持HLS和mp4在线播放的源码(hls支持的视频编码格式)

今天安利的一套在线视频播放源码,它不是安卓端,也不是PC端。你只需要部署一下这个单页面源码即可。使用php+mysql+nginx即可。任何版本都能运行。HLSDOWNLOAD网页打开服务器地址:1...

大模型微调知识与实践分享(模具微调结构)

一、微调相关知识介绍...

IOS遇到的几个H5坑、h5键盘弹起遮挡输入框的处理

一、IOS遇到的几个H5坑1、ios端兼容input光标高度  问题描述:input输入框光标,在安卓手机上显示没有问题,但是在苹果手机上当点击输入的时候,光标的高度和父盒子的高度一样。例如下图,左...

实用技巧:如何在win10中安装没有管理员权限的软件

通常,我们可能会遇到需要在Windows10电脑上安装软件,但在该电脑上没有管理员权限的情况,由于不是管理员,所以无权在在电脑上安装软件,这让人非常苦恼。事实上,这是微软专门设计的一个安全功能,它的...

基于ENVI的Landsat 7遥感影像处理与多种大气校正方法对比

1数据导入与辐射定标关于数据的下载,网络中相关资源很多,这里不再赘述。...

在 Python 中为无服务器应用设计安全租户隔离

软件即服务(SaaS)已经成为当今一种非常普遍的软件交付方式。虽然这方便了用户访问,而且消除了用户的运营开销,但这也改变了以前的模式,将实现SLA以及现代云原生组织所期望的所有安全和数据隐私要求的...

基于JFinal的后台业务框架通用模块

jcbase是基于JFinal2.x的后台业务框架通用模块,包括系统权限模块、APP版本管理、日志管理、数据字典等使用的技术要点后端使用JFinal2.x前端页面是基于acev1.3模板改造的,更方便...

PHOTOSHOP图层技巧(掌握photoshop合并图层技巧)

你会图层吗?不会?喔,那你肯定不会PHOTOSHOP。为什么那么说呢?因为图层可以说是PHOTOSHOP的核心,几乎PHOTOSHOP所有的应用都是基于图层的,很多强劲的图像处理功能也是图层所提供的,...

Cadence Allegro背钻设置详细介绍教程

CadenceAllegro背钻设置详细介绍教程...

Pt中间层显著降低PEM水电解电子传输阻抗

在质子交换膜水电解(PEMWE)中,阳极OER的Ir基催化剂成本高昂,成为制约产业化的重要瓶颈。虽然非晶态IrOx具有高OER活性,但其电导率较差、与多孔钛PTL之间接触不良,往往导致催化剂层利用率低...

GIMP 教程:制作 Duotone 双色调效果

今天我们学习如何使用GIMP这款强大的开源图像编辑器,制作流行的Duotone(双色调)效果。Duotone效果的核心原理,是将图像的色调信息映射到两种主要颜色上。通常,一种颜色用于图像的亮部...

CAD打印的时候线条没了?原来是这些设置出了错

每当我们辛辛苦苦绘制完一张图纸之后,打印出图的时候总会出现各种各样的问题,不知道大家有没有遇到这种情况:在预览的时候还一切正常,但是打印出来之后就会发现很多线条都会不见了或者部分缺失。那么到底是怎么一...

取消回复欢迎 发表评论: