# easy-mq **Repository Path**: zhangduobao_1/easy-mq ## Basic Information - **Project Name**: easy-mq - **Description**: easy-mq在MQ简单的实现上增加了更加丰富的扩展。比如分组? 比如跨MQ? - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 0 - **Created**: 2021-12-06 - **Last Updated**: 2024-12-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 目标 1. 简化应用接入多消息源的成本。 2. 简化应用接入消息中间件的成本。可同时支持多种mq,如activeMq, kafka, rocketmq等。 3. 更简单更灵活的配置。 # 版本规划 |功能|上线版本| |:--|:--| |支持activeMq|1.0.0| |多消息源|1.0.0| |多环境配置|1.0.0| |EasyMq注解|1.0.0| |接收/发送消息支持实体对象|1.0.0| |更优化的消息配置方案,接管EasyMq注解中的mq、env配置|待定| |支持kafka|待定| |支持rocketmq|待定| # 使用说明 1. 引入依赖包 ```xml com.ls.easy easy-mq 1.0.0-SNAPSHOT ``` 2. 增加配置 此处以application.properties为例 ```properties easy.mq.activemq.dev.url=tcp://192.168.220.107:61616 easy.mq.activemq.dev.user=admin easy.mq.activemq.dev.password=admin easy.mq.activemq.qa.url=tcp://192.168.220.108:61616 easy.mq.activemq.qa.user=admin easy.mq.activemq.qa.password=admin ``` easy.mq前缀是必须的。 activemq表示这个连接为activeMq。对应EasyMq注解中的mq字段。注意大小写。 dev/qa表示环境,对应EasyMq注解中的env字段。注意大小写。 url表示连接的地址,注意这里不支持写多个,比如`tcp://192.168.220.107:61616,tcp://192.168.220.108:61616`这种写法是不支持的 3. 生产端测试代码 ```java @Slf4j @Component public class DevMqProducer { @EasyMq(name = "TEST_ADMIN_MQ", mq = "activemq",env="dev",producer=true) public String send(String str){ return str; } @EasyMq(name = "TEST_ADMIN_MQ_2", mq = "activemq",env="dev",producer=true) public TestMqMsgDto send2(){ TestMqMsgDto dto = new TestMqMsgDto(); dto.setName("aaaaa"); dto.setAge(122); return dto; } } ``` 方法上增加`EasyMq`注解,`producer`的值为`true`时,表明该方法的返回值是作为消息体进行发送的。 出参支持自定义实体类,自定义实体类注意需要序列化。 4. 消费端测试代码 ```java @Slf4j @Component public class DevMqConsumer { @EasyMq(name = "TEST_ADMIN_MQ", mq = "activemq",env="dev") public void consumer(String msg) { log.info(msg); } @EasyMq(name = "TEST_ADMIN_MQ_2", mq = "activemq",env="dev") public void consumer2(TestMqMsgDto msg) { log.info(JSON.toJSONString(msg)); } } ``` 方法上增加`EasyMq`注解,不增加`producer`属性,或`producer`设置为`false`,表明该方法是用来消息接收的。 入参支持自定义实体类,自定义实体类注意需要序列化。 # 配置说明 1. mq连接配置。 `easy.mq`: 为固定的前缀。 `activemq`: 为指定的mq类型,注意全是小写。 `dev`: 为自定义的环境,可以不加。如果要连接没有环境的消息连接,在`EasyMq`注解中的env不配置或配置为空字符就行。 `url`:连接地址 `user`: 用户名 `password`: 密码 连接配置可以配置应用中的properties中,也可以配置到统一配置中心,如nacos 2. 注解说明 消息注解为`EasyMq` `name`: 消息的名字,必须要配置的。 `mq`: 代表mq类型,对应mq连接配置中`easy.mq.activemq`中的`activemq` `env`: 代表环境,用于获取配置的mq连接,对应mq连接配置中`easy.mq.activemq.dev.url`中的`dev`这个位置的文字。注意一定要保证一致。如果没有配置环境,注解中就不需要配置env,同时mq连接配置配置成如`easy.mq.activemq.url`即可。 `producer`: 默认值为`false`, 表明是否是消息生产者,如果方法的返回值是需要作为消息内容发送的,将该值置为`true`。