Uncode-MQ

轻量级Java消息中间件
授权协议 未知
开发语言 Java
所属分类 服务器软件、 JMS/消息中间件
软件类型 开源软件
地区 国产
投 递 者 焦阎宝
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

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

}
 相关资料
  • 问题内容: JPanel和JFrame有什么区别,以及与轻量级,重量级的关系? 问题答案: JPanel是允许将多个UI组件放在一起的容器。JFrame是使用Swing编写的窗口。 所有的Swing组件都是所谓的“轻型”组件,因为它们是用Java编写的。例如,如果您运行Swing应用程序并尝试使用UI分析工具(例如Windows中的WinSpy)对其进行分析,则只会看到一个元素:窗口(JFrame

  • Jboot 内置了对MQ消息队列的功能支持,使用MQ需要以下几步步骤。 第一步:配置jboot.properties文件,内容如下: # 默认为redis (支持: redis,activemq,rabbitmq,hornetq,aliyunmq等 ) jboot.mq.type = redis jboot.mq.channel = channel1,channel2,channel3 jboot

  • 我有一个关于Rabbitmq交付稳定性的问题。 安兔兔mq官方主页称,确认电话保证至少一次送达。 生产者生成的消息是否可以多次传递?(我想知道消费者是否可以对同一条消息进行重复工作。) 我英语说得不好。内容可能很奇怪。我希望你能理解。

  • 本文向大家介绍Spring boot项目redisTemplate实现轻量级消息队列的方法,包括了Spring boot项目redisTemplate实现轻量级消息队列的方法的使用技巧和注意事项,需要的朋友参考一下 背景 公司项目有个需求, 前端上传excel文件, 后端读取数据、处理数据、返回错误数据, 最简单的方式同步处理, 客户端上传文件后一直阻塞等待响应, 但用户体验无疑很差, 处理数据可

  • 问题内容: 题 我正在寻找Java内存对象缓存API。有什么建议吗?您过去使用过什么解决方案? 当前 现在,我只是在使用地图: 要求 我需要扩展缓存以包括以下基本功能: 最大尺寸 生存时间 但是,我不需要更复杂的功能,例如: 来自多个进程的访问(缓存服务器) 持久性(到磁盘) 意见建议 内存中缓存: Guava CacheBuilder-活动开发。请参阅此演示文稿。 LRUMap-通过API配置。