GithubHelp home page GithubHelp logo

ppdaicorp / pmq Goto Github PK

View Code? Open in Web Editor NEW
481.0 25.0 174.0 8.69 MB

信也科技MQ消息系统

License: Apache License 2.0

Java 84.14% Shell 0.07% CSS 0.60% JavaScript 6.31% HTML 8.88%
mq mqtt-broker mqtt-client message-queue message broker

pmq's Introduction

PMQ 信也科技微服务消息队列介绍

PMQ是信也科技自研的一款轻量级分布式消息队列,能够保证消息的不丢失,具有部署和运维简单的特性。消息队列采用mysql数据库进行消息存储,能够非常方便和简单的进行水平扩展。

消息队列基于Spring Boot开发,打包后可以直接运行,不需要额外安装Tomcat等应用容器。

消息队列原生客户端不依赖任何框架,能够运行于所有Java1.8+运行时环境,同时对Spring Mvc/Spring Boot环境也有额外支持。

详细设计和部署文档,请参考 快速部署

Screenshots

PMQ交互图

Features

消息队列具有以下特点:

  1. 支持动态重平衡
  2. 支持动态修改偏移量
  3. 支持动态修改线程数
  4. 支持动态修改延迟时间
  5. 支持动态设置黑白名单
  6. 支持动态修改批量消费条数
  7. 支持消息发送令牌防止乱发
  8. 支持动态启停消费
  9. 支持自助创建topic,自助扩容
  10. 支持自助创建消费者组
  11. 支持自助添加和解除绑定topic
  12. 支持一个应用订阅多个消费者组
  13. 失败消息重新消费
  14. 支持消息无缝迁移

PMQ技术交流群

QQ

参考资料

相关文档请参考 ppt在线介绍

pmq's People

Contributors

abcabcabcabcc avatar crane9926 avatar dependabot[bot] avatar lorgine-li avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pmq's Issues

源码down到本地,有如下几个类not found

import com.ppdai.infrastructure.mq.biz.common.trace.CatContext;
import com.ppdai.infrastructure.mq.biz.common.trace.Tracer;
import com.ppdai.infrastructure.mq.biz.common.trace.spi.Transaction;
import com.ppdai.infrastructure.mq.biz.dto.BaseResponse;
com.ppdai.infrastructure.mq.biz.dto包下很多类都找不到呢,是需要动态生成吗?

待处理消息数为负

UI界面“队列消费管理”中,消费者组的待处理消息数为负,按照UI界面的提示:

2.待处理消息数为负时,待处理消息数显示为红色。影响消费,需要及时处理!
问题原因:当偏移值大于数据表的最大Id时,会出现待处理消息数为负的问题。
解决办法:手动修改偏移,让偏移值小于当前数据表的最大Id。

发现需要设置偏移值大于数据表的最大Id,但是发现消费表的最大Id为0,也就是无法消费。请问哪里能设置消息表的最大ID?
截图如下:
Snipaste_2021-05-23_11-58-57
Snipaste_2021-05-23_12-00-01

客户端添加接收message的shutdownHook

@Lorgine

问题:

当mq客户端应用被kill时,ISubscriber.onMessageReceived方法仍旧在接收message。但是应用中很多业务处理的组件都在JVM shutdownHook 中做了清理处理,此时接收的message可能不能被正常处理。

建议:

为mq client添加ShutdownHook,当客户端应用被kill时及时关闭message的接收,例如:

 Runtime.getRuntime().addShutdownHook(new Thread(()-> {
          //shutdown mq client
}));

服务启动时会有时区的问题

服务启动时会有时区的问题,可以加上时区,避免报错,这里需要加上时区:spring.datasource.url = jdbc:mysql://localhost:3306/mq_basic?useUnicode=true&characterEncoding=utf8&useSSL=false 这里没有加上时区

master分支中demo代码与文档内容不一致

1.与文档内容不一致(建议改成一致,可能对新手来说是致命打击)

  • 在文档中是
<messageQueue>
	<consumer groupName="test1sub">
		<topics>
			<topic name="test1" receiverType="com.ppdai.infrastructure.demo.TestSub"></topic>
			<topic name="test4" receiverType="com.ppdai.infrastructure.demo.TestSub"></topic>
		</topics>
	</consumer>
</messageQueue>
  • 在代码中是
<messageQueue>
	<consumer groupName="testClusterSub">
		<topics>
			<topic name="test1" receiverType="com.ppdai.infrastructure.demo.TestSub"></topic>
		</topics>
	</consumer>
	<consumer groupName="testBroadcastSub">
		<topics>
			<topic name="test1" receiverType="com.ppdai.infrastructure.demo.TestSub"></topic>
		</topics>
	</consumer>
</messageQueue>

2.消息发送的条数有问题

  • 在demo的TestController类中第22行for(int i=1;i<count;i++),这里从1开始,导致实际发送10条,但是在admin上只能看到9条,建议从0开始

希望提供更多的文档和架构图

有系统架构图和组件直接的关系图吗?以及简单介绍一下如何做到保证你们提出的那些功能。
支持动态重平衡
支持动态修改偏移量
支持动态修改线程数
支持动态修改延迟时间
支持动态设置黑白名单
支持动态修改批量消费条数
支持消息发送令牌防止乱发
支持动态启停消费
支持自助创建topic,自助扩容
支持自助创建消费者组
支持自助添加和解除绑定topic
支持一个应用订阅多个消费者组
失败消息重新消费
支持消息无缝迁移

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.