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相关推荐

  1. java 轻量数据库_DBTree是一个springboot2 + vue-element-template实现的轻量数据库表结构查看及管理工具...

    DBTree简介 DBTree是一个WEB版的轻量数据库表结构查看及管理工具,相比phpMyAdmin, DBTree只专注于方便开发查看表结构信息和 注释维护.通过树形展示库表结构,可以对表进行自定 ...

  2. win8.1 cygwin编译java轻量虚拟机avian

    1.背景 昨天在网上看到别人用aauto写本地小程序写的很爽,我觉得如果java的jre能小一点,凭借java庞大的第三方类库写小工具也还算不错的.本人就经常用eclipse+一些commons包写些 ...

  3. java轻量分布式框架_推荐5个强大的Java分布式缓存框架

    在开发中大型Java软件项目时,很多Java架构师都会遇到数据库读写瓶颈,如果你在系统架构时并没有将缓存策略考虑进去,或者并没有选择更优的缓存策略,那么到时候重构起来将会是一个噩梦.动宝儿为了帮助大家 ...

  4. voyage java_GitHub - yezilong9/voyage: 采用Java实现的基于netty轻量的高性能分布式RPC服务框架...

    Voyage Overview 采用Java实现的基于netty轻量的高性能分布式RPC服务框架.实现了RPC的基本功能,开发者也可以自定义扩展,简单,易用,高效. Features 服务端支持注解配 ...

  5. 阿里云轻量云服务器部署java项目

    阿里云轻量云服务器部署java项目 前言:阿里云最新推出了轻量云服务器,说是可以简化配置.看重他是因为带宽明显提升.就继续照着ecs服务器的方式安装了一系列环境.系统是阿里云的Centos7.3.JD ...

  6. java 偏向锁 重偏向_锁原理:偏向锁、轻量锁、重量锁

    java中每个对象都可作为锁,锁有四种级别,按照量级从轻到重分为:无锁.偏向锁.轻量级锁.重量级锁.每个对象一开始都是无锁的,随着线程间争夺锁,越激烈,锁的级别越高,并且锁只能升级不能降级. 一.ja ...

  7. Java的锁机制--偏向锁、轻量锁、自旋锁、重量锁

    基础知识 线程切换代价 Java的线程是映射到操作系统的原生线程之上的,如果阻塞或唤醒一个线程就需要操作系统介入,需要在用户态和内核态之间切换,该切换会消耗大量的系统资源,因为用户态和内核态均有各自专 ...

  8. 利用Docker/Ansible实现轻量集群服务部署(视频演示+彩蛋)

    周良伟 网易云信系统架构师 负责云信IM平台的架构设计和服务器研发团队 作者简介 今天和大家分享的主题是如何用Docker/Ansible来做轻量私有化的技术方案.首先,简单介绍一下所谓轻量私有化到底 ...

  9. 轻量目录访问协议 工具 openldap 简介

    目录 为什么会有本文? 先了解一些概念 什么是ldap ldap的软件 ldap的信息模型 centos7上的安装 安装openldap ldap的配置文件 创建olcRootDN作为管理员账号 添加 ...

  10. 史上最轻量​!阿里新型单元测试Mock工具开源了

    简介:为了探索更轻量易用的Mock测试手段,阿里云云效团队尝试给工具减负,在主流Mock工具的基础上让Mock的定义和置换干净利落,最终设计了一款极简风格的测试辅助工具TestableMock,无需初 ...

最新文章

  1. const修饰的指针常量和常量指针
  2. 喜忧参半的AI,“裸奔”之下的隐私焦虑
  3. GraphViz:2 DOT语法和相关应用
  4. 区块链BaaS云服务(20)百度超级链BaaS
  5. 一个按钮触发两个事件可以吗?
  6. 算法学习--买卖股票的最佳时机
  7. netty 水位线与oom
  8. Netty工作笔记0004---BIO简介,介绍说明
  9. iOS底层探索之Runtime(四): 动态方法解析
  10. 人们为何喜欢在社交网络发布个人状态?
  11. 【2019南昌邀请赛网络赛 B Greedy HOUHOU BZOJ 2957 楼房重建】线段树+二分
  12. php文字音频插件下载安装,Goodhertz音频插件下载
  13. 数据库面试考题一览(全面覆盖)
  14. 网络 4.0 防火墙概述
  15. MySQL数据类型----布尔型,时间型,枚举型的简单介绍
  16. STC12驱动PCF8575
  17. windows2008 没有本地用户和组
  18. mysql删去root用户无法登录_MySQL误删root用户导致无法登陆解决方法
  19. AI_综述:3D目标检测于RGB-D(Object detection in RGB-D images)
  20. 哪来那么大厂,程序员在广州的那些真实面试场景

热门文章

  1. 小知识:Windows XP优化全攻略(网吧型)
  2. python 读excel每行替换_Python使用openpyxl读写excel文件
  3. excel交换两列笔记
  4. 如何正确利用肢体语言表达自己
  5. Java实现隐藏文件夹
  6. Java整合PayPal支付结账和支出
  7. Flink_网站独立访客数(UV)(Redis+布隆过滤器)
  8. 学python的网课_python网课学习笔记--4
  9. 如何用matlab画北极熊,简笔画:如何使用Flash绘制北极熊,值得收藏
  10. 概念理解:财新服务业PMI