{"id":15103696,"url":"https://github.com/glcas/tinymq","last_synced_at":"2026-02-16T17:02:06.726Z","repository":{"id":181200247,"uuid":"666392291","full_name":"glcas/TinyMQ","owner":"glcas","description":"Realize a tiny message queue from zero.","archived":false,"fork":false,"pushed_at":"2024-03-12T03:22:23.000Z","size":167,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-05T12:29:59.348Z","etag":null,"topics":["mq","netty","rocketmq"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/glcas.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2023-07-14T11:58:58.000Z","updated_at":"2024-03-12T03:22:08.000Z","dependencies_parsed_at":"2023-07-14T13:25:08.538Z","dependency_job_id":"d4e7cbbd-8ace-44c5-8c22-9de4b46d42b2","html_url":"https://github.com/glcas/TinyMQ","commit_stats":null,"previous_names":["glcas/mq-toy","glcas/tinymq"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/glcas/TinyMQ","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/glcas%2FTinyMQ","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/glcas%2FTinyMQ/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/glcas%2FTinyMQ/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/glcas%2FTinyMQ/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/glcas","download_url":"https://codeload.github.com/glcas/TinyMQ/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/glcas%2FTinyMQ/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275575325,"owners_count":25489094,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-17T02:00:09.119Z","response_time":84,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["mq","netty","rocketmq"],"created_at":"2024-09-25T19:41:32.218Z","updated_at":"2025-09-17T10:07:59.479Z","avatar_url":"https://github.com/glcas.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TinyMQ\n\nA tiny version of [RocketMQ](https://rocketmq.apache.org/), inspired\nfrom [houbb/mq](https://github.com/houbb/mq).\n\n## Enhancement\n\nHighlights several enhancements compared with [houbb/mq](https://github.com/houbb/mq) here:\n\n- fewer external dependencies, realize more built-in utilities\n- for robustness, json parser/wrapper change from [fastjson](https://github.com/alibaba/fastjson)\n  to [Jackson](https://github.com/FasterXML/jackson)\n- generate [Snowflake ID](https://en.wikipedia.org/wiki/Snowflake_ID), instead of original UUID\n- default message push relies on long polling, while original push only used for urgent message\n- decoupling message transfer and consumption, therefore peak cut\n- performance improvement and more reasonable implementation of details\n- cleaner code, naming and structure, with more notes\n\nAlso fixed some bugs.\n\n## 相关学习参考\n\n### RocketMQ\n\n- [RocketMQ 部分核心概念](https://www.cnblogs.com/qdhxhz/p/11094624.html)\n- [Topic、Tag 和 GroupName 概念介绍](https://blog.csdn.net/agonie201218/article/details/118561943)\n- [消息“伪推送”模式解析](https://mp.weixin.qq.com/s/opqRf8UjI9rRW_4befWrbA)（消费者长轮询，相当于掌握是否接受推送的主动权）\n\n### Netty网络编程\n\n- [Netty 入门知识点整理](https://zhuanlan.zhihu.com/p/94584675)\n- [Netty 核心原理剖析与 RPC 实践](https://learn.lianglianglee.com/%E4%B8%93%E6%A0%8F/Netty%20%E6%A0%B8%E5%BF%83%E5%8E%9F%E7%90%86%E5%89%96%E6%9E%90%E4%B8%8E%20RPC%20%E5%AE%9E%E8%B7%B5-%E5%AE%8C/)\n- [ChannelPipeline 相关概念（包括 ChannelHandler 及 ChannelHandlerContext）](https://www.cnblogs.com/qdhxhz/p/10234908.html)\n- [启动类 ServerBootstrap 和 Bootstrap](https://www.jianshu.com/p/c912dfe0dceb)\n- [bossGroup(parentGroup) 和 workerGroup(childGroup) 的作用及关系](https://blog.csdn.net/weixin_44976692/article/details/118414027)\n- [数据发送方法 WriteAndFlush() 底层实现](https://www.cnblogs.com/ZhuChangwu/p/11228433.html)\n- [channelHandlerContext.close() 与 channel.close()](https://emacsist.github.io/2018/04/27/%E7%BF%BB%E8%AF%91netty4%E4%B8%AD-ctx.close-%E4%B8%8E-ctx.channel.close-%E7%9A%84%E5%8C%BA%E5%88%AB/)\n- [eventLoopGroup.shutdownGracefully()](https://blog.csdn.net/m0_45406092/article/details/104634198)\n\n### Java编程最佳实践\n\n- [Objects.requireNonNull() 方法：Fail-fast 设计思想](https://blog.csdn.net/qq_42671519/article/details/121530411)\n- Jackson 要求反序列化的类提供无参构造函数\n- [Lambda 表达式](https://objcoding.com/2019/03/04/lambda/)\n- [方法引用](https://www.cnblogs.com/xiaoxi/p/7099667.html)\n- [线程池原理](https://mp.weixin.qq.com/s/lVem8mGANea8aUYF3XCO7Q)\n- [JDK 9+ 字符串拼接探究](https://github.com/yesh0/stringbuilder-test)\n  （注：循环字符串拼接仍以提前创建 StringBuilder 复用为佳，因为循环 \"+\" 拼接字符串会重复创建 StringBuilder）\n- [优雅关闭](https://blog.csdn.net/m0_45406092/article/details/104578672)\n- [参考命名规范](https://pdai.tech/md/develop/ut/dev-qt-code-style-2.html)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fglcas%2Ftinymq","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fglcas%2Ftinymq","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fglcas%2Ftinymq/lists"}