# message-tools **Repository Path**: openquartz/message-tools ## Basic Information - **Project Name**: message-tools - **Description**: 消息优化小工具。助力提升服务稳定性。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: https://openquartz.github.io/ - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2023-07-25 - **Last Updated**: 2025-06-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### Message-Tools #### 功能1: 消息打包 单个消息,自动打包成批量消息功能。 ###### 解决问题 1、解决同一类消息发送频率高,多点发送。出现消息阻塞,消费者消费频率高等场景。 ###### 原理 将单独发送的消息做合并处理,按照大小,或者行数进行合并处理发送。 ![原理示意图](./doc/image/principle.jpg) ###### 使用 ```java package com.openquartz.messagetools.packing; /** * MessageStagingQueue * * @param T */ public interface MessageStagingQueue { /** * put message * * @param value value message */ void put(T value); /** * add message * * @param value value */ default void add(T value) { put(value); } /** * put and flush message * * @param value value message */ default void putAndFlush(T value) { // put message put(value); // flush message flush(); } /** * flush message */ void flush(); } ``` 默认实现: - 按照消息行数打包(com.openquartz.messagetools.packing.MessageRowsStagingQueue) - 按照消息大小打包(com.openquartz.messagetools.packing.MessageSizeStagingQueue) ![原理示意图](./doc/image/MessageStagingQueue.png) 提供打包监听服务. ```java package com.openquartz.messagetools.packing; import java.util.List; /** * Message Packing Listener * @param * @author svnee */ @FunctionalInterface public interface MessagePackingListener { /** * on packing message * @param messageList packing result */ void onPacking(List messageList); } ```