轻量级Java消息中间件 Uncode-MQ

未知
Java 查看源码»
跨平台
2016-08-04
开源中国股瞎

uncode-mq

java轻量级消息中间件。

功能特点

  1. 消息存储速度非常快速。

  2. 使用简单方便,目前只支持topic方式。

  3. 依赖java环境。

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

模块架构

umq

说明:集群由多个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秒

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) {
        //处理逻辑
    }

}
的码云指数为
超过 的项目
加载中

评论(1)

MartinBockZhu
MartinBockZhu

暂无资讯

暂无问答

轻量级java消息中间件简介

自已实现了一个轻量级的java消息中间件,欢迎学习交流。https://github.com/uncodecn/uncode-mq

2016/08/03 18:26
515
1
Uncode系列开源后端开发组件

Uncode 是基于Java 语言的一系列开源后端开发组件,主要包括:移动后端开发框架Uncode-BaaS,通用数据库访问组件Uncode-DAL和分布式任务调度组件Uncode-Schedule。其核心设计目标是使移动后端...

2016/02/15 14:51
3.1K
5
uncode移动后端云【www.uncode.cn】--简介

Uncode移动后端云,专注于移动应用后端服务,专业的MBaaS服务商! 任何企业或个人,通过Uncode移动后端云,都可以给移动应用快速定制个性化的后端业务逻辑,可以大大降低后端开发时间和成本。...

2014/08/16 20:39
1K
0
分布式定时任务框架---Uncode Schedule

分布式定时任务框架---Uncode Schedule rabbitGYK 关注 2016.11.27 20:36* 字数 1446 阅读 7141评论 5喜欢 36赞赏 1 博客原文 作为一个支付公司的项目组,经常会有很多对账功能(签约对账、支...

2018/11/02 13:33
66
0
Uncode移动后端云--MBaaS简介

MBaaS(移动后端即服务:Mobile Backend as a Service)是一种新兴移动中间服务,已经成为当今技术市场中最热门的趋势之一。与SaaS(软件即服务:Software as a Service)、IaaS(基础设施即...

2014/08/21 23:31
478
1
分布式调度任务

1什么是分布式任务调度 1.1任务举例-定时任务 1.1.1实际案例 1.1.1.1网贷-日终任务 1.1.1.2其它业务-全日频繁 1.1.1.3 Crontab、shell 1.2产生问题 PK 解决问题 1.2.1迎面遇到第一个问题:集...

01/13 23:51
52
0
使用Python内建chr, ord实现的简单的加/解密

###Python中有两个个内建方法,用于解决0-255与相应ascii码转换: 1. chr() Return a string of one character with ordinal i; 0 <= i < 256. 也就是,返回代表整数范围内0-255对应的字符。...

2014/03/25 20:54
2.1K
0
Java通用数据访问层 Uncode-DAL

Uncode-DAL 网站 : http://git.oschina.net/uncode/uncode-dal-all 本着不重复造轮子的原则,基于mybatis、spring jdbc、hibernate等ORM的通用数据访问层,支持基于datasource的读写分离、主...

2016/04/09 10:06
95
2
Mybatis---xml if表达式判断问题

测试别人的报表,前台报错提示查询失败。马上看后台报下面这个错误: ### Cause: java.lang.NumberFormatException: For input string: "y" at org.mybatis.spring.MyBatisExceptionTranslat...

2018/09/18 18:07
63
0
这些优秀的国产分布式任务调度系统,你用过几个?

分布式调度在互联网企业中占据着十分重要的作用,尤其是电子商务领域,由于存在数据量大、高并发的特点,对数据处理的要求较高,既要保证高效性,也要保证准确性和安全性,相对比较耗时的业务...

2018/04/18 11:47
57
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部