# tyylab-message **Repository Path**: tyylab/tyylab-message ## Basic Information - **Project Name**: tyylab-message - **Description**: 专注于消息传递技术的研究与开发,tyylab-message 提供高效、可靠的通信框架,适用于实时聊天、通知系统、秒杀削峰等应用场景。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 2 - **Created**: 2025-02-08 - **Last Updated**: 2025-11-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # tyylab-message [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](https://www.apache.org/licenses/LICENSE-2.0) ![Java Version](https://img.shields.io/badge/java-1.8%2B-orange) 轻量级分布式事件收发组件,基于Spring Boot和Redis实现高效的消息发布/订阅机制。 ## 功能特性 - 🚀 基于Redis的分布式事件发布/订阅 - ⚡ 自动配置(开箱即用) - 🔒 消息幂等性支持(通过IUniqueSupport接口) - 🌐 远程事件发布能力(RemoteEventPublisher) - 🧩 模块化设计(核心/API/监听/分发解耦) - 📊 并发处理控制(可配置线程池参数) ## 快速开始 ### 依赖配置 ```xml com.tyylab.open tyylab-message-core 1.0.0 ``` ### 基础配置 ```yaml # application.yml tyylab: message: redis: host: localhost port: 6379 database: 0 thread-pool: core-size: 4 max-size: 8 ``` ### 事件发布示例 ```java @Autowired private ITyylabEventPublisher eventPublisher; public void publishEvent() { eventPublisher.publish(new PingEvent()); } ``` ### 事件订阅示例 #### 接口实现方式 ```java @Slf4j @Component public class DemoSubscriber implements ISubscribe { @Override public void onMessage(PingEvent event) { log.info("收到Ping事件: {}", event); } @Override public boolean match(PingEvent event) { return event.isValid(); // 条件订阅 } } ``` #### 注解实现方式 ```java @Slf4j @Component public class SpringAnnotationSubscriber { @EventListener(classes = PingEvent.class) public void handlePingEvent(PingEvent event) { log.info("通过Spring注解处理事件: {}", event); } } ``` ## 模块说明 | 模块名称 | 功能描述 | |--------------------------|----------------------------| | tyylab-message-api | 定义核心接口和事件模型 | | tyylab-message-core | 核心实现(Redis配置/消息处理)| | tyylab-event-listener | 事件监听实现 | | tyylab-event-publish-remote | 远程事件发布支持 | | tyylab-message-distribute| 消息分发策略管理 | ## 高级配置 ### 序列化配置 ```java @Configuration public class MessageConfig { @Bean public RedisSerializer messageSerializer() { return new FastJsonRedisSerializer(); } } ``` ### 通道检查(可选) ```java @Component public class ChannelChecker implements IChannelCheck { @Override public boolean check(String channel) { return !channel.contains("internal"); } } ``` ## 开发者指南 ### 构建项目 ```bash mvn clean install -DskipTests ``` ### 贡献代码 1. Fork项目仓库 2. 创建特性分支(feature/xxx) 3. 提交Pull Request到develop分支 ## 许可证 本项目采用 [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0) ## 技术支持 联系邮箱:bill_ho@foxmail.com