java 轻量 mq_uncode-mq
uncode-mq
基于netty的轻量级java消息中间件。
功能特点
消息存储速度非常快速。
使用简单方便,目前只支持topic方式。
依赖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 list = new ArrayList();
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 list = new ArrayList();
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 subscribeToTopic() {
List tps = new ArrayList();
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 subscribeToTopic() {
List tps = new ArrayList();
tps.add("umq");
return tps;
}
@Override
public void notify(Topic topic) {
//处理逻辑
}
}
关于
作者:冶卫军(ywj_316@qq.com,微信:yeweijun)
技术支持QQ群:47306892
Copyright 2020 www.uncode.cn
java 轻量 mq_uncode-mq相关推荐
- java 轻量数据库_DBTree是一个springboot2 + vue-element-template实现的轻量数据库表结构查看及管理工具...
DBTree简介 DBTree是一个WEB版的轻量数据库表结构查看及管理工具,相比phpMyAdmin, DBTree只专注于方便开发查看表结构信息和 注释维护.通过树形展示库表结构,可以对表进行自定 ...
- win8.1 cygwin编译java轻量虚拟机avian
1.背景 昨天在网上看到别人用aauto写本地小程序写的很爽,我觉得如果java的jre能小一点,凭借java庞大的第三方类库写小工具也还算不错的.本人就经常用eclipse+一些commons包写些 ...
- java轻量分布式框架_推荐5个强大的Java分布式缓存框架
在开发中大型Java软件项目时,很多Java架构师都会遇到数据库读写瓶颈,如果你在系统架构时并没有将缓存策略考虑进去,或者并没有选择更优的缓存策略,那么到时候重构起来将会是一个噩梦.动宝儿为了帮助大家 ...
- voyage java_GitHub - yezilong9/voyage: 采用Java实现的基于netty轻量的高性能分布式RPC服务框架...
Voyage Overview 采用Java实现的基于netty轻量的高性能分布式RPC服务框架.实现了RPC的基本功能,开发者也可以自定义扩展,简单,易用,高效. Features 服务端支持注解配 ...
- 阿里云轻量云服务器部署java项目
阿里云轻量云服务器部署java项目 前言:阿里云最新推出了轻量云服务器,说是可以简化配置.看重他是因为带宽明显提升.就继续照着ecs服务器的方式安装了一系列环境.系统是阿里云的Centos7.3.JD ...
- java 偏向锁 重偏向_锁原理:偏向锁、轻量锁、重量锁
java中每个对象都可作为锁,锁有四种级别,按照量级从轻到重分为:无锁.偏向锁.轻量级锁.重量级锁.每个对象一开始都是无锁的,随着线程间争夺锁,越激烈,锁的级别越高,并且锁只能升级不能降级. 一.ja ...
- Java的锁机制--偏向锁、轻量锁、自旋锁、重量锁
基础知识 线程切换代价 Java的线程是映射到操作系统的原生线程之上的,如果阻塞或唤醒一个线程就需要操作系统介入,需要在用户态和内核态之间切换,该切换会消耗大量的系统资源,因为用户态和内核态均有各自专 ...
- 利用Docker/Ansible实现轻量集群服务部署(视频演示+彩蛋)
周良伟 网易云信系统架构师 负责云信IM平台的架构设计和服务器研发团队 作者简介 今天和大家分享的主题是如何用Docker/Ansible来做轻量私有化的技术方案.首先,简单介绍一下所谓轻量私有化到底 ...
- 轻量目录访问协议 工具 openldap 简介
目录 为什么会有本文? 先了解一些概念 什么是ldap ldap的软件 ldap的信息模型 centos7上的安装 安装openldap ldap的配置文件 创建olcRootDN作为管理员账号 添加 ...
- 史上最轻量!阿里新型单元测试Mock工具开源了
简介:为了探索更轻量易用的Mock测试手段,阿里云云效团队尝试给工具减负,在主流Mock工具的基础上让Mock的定义和置换干净利落,最终设计了一款极简风格的测试辅助工具TestableMock,无需初 ...
最新文章
- const修饰的指针常量和常量指针
- 喜忧参半的AI,“裸奔”之下的隐私焦虑
- GraphViz:2 DOT语法和相关应用
- 区块链BaaS云服务(20)百度超级链BaaS
- 一个按钮触发两个事件可以吗?
- 算法学习--买卖股票的最佳时机
- netty 水位线与oom
- Netty工作笔记0004---BIO简介,介绍说明
- iOS底层探索之Runtime(四): 动态方法解析
- 人们为何喜欢在社交网络发布个人状态?
- 【2019南昌邀请赛网络赛 B Greedy HOUHOU BZOJ 2957 楼房重建】线段树+二分
- php文字音频插件下载安装,Goodhertz音频插件下载
- 数据库面试考题一览(全面覆盖)
- 网络 4.0 防火墙概述
- MySQL数据类型----布尔型,时间型,枚举型的简单介绍
- STC12驱动PCF8575
- windows2008 没有本地用户和组
- mysql删去root用户无法登录_MySQL误删root用户导致无法登陆解决方法
- AI_综述:3D目标检测于RGB-D(Object detection in RGB-D images)
- 哪来那么大厂,程序员在广州的那些真实面试场景