-
Notifications
You must be signed in to change notification settings - Fork 118
sika-code edited this page Jul 20, 2019
·
1 revision
mq【消息队列公共组件】
- 消息队列公共组件
- 封装消息队列公共交互对象
- 减少重复性工作
- 规范消息队列交互方式
- 封装通用的消息交互对象
- 规范消息对象的生成规则
- 规范消息对象的格式
名称 | 备注 |
---|---|
MqConfig | 消息队列配置类 |
MqDataType | 消息队列数据类型类 |
MqMsgGenerator | 消息队列消息传输对象的创建者 |
MqMsgDTO | 消息队列消息数据传输对象、简单情况下可以复用相同的队列处理不同类型的消息 |
1 创建消息生成者的Bean
MqMsgGenerator [组件本身已提供生成者的条件化配置]
@Configuration
public class MqConfig {
@Autowired
private WorkspaceProperties workspaceProperties;
/** 注入Mq消息数据传输对象生成者Bean */
@Bean
@ConditionalOnMissingBean
public MqMsgGenerator mqMsgGenerator() {
return new MqMsgGenerator()
.setNoGenerator(NoFactory.createSecondShortOrder(workspaceProperties))
;
}
}
2 注入MqMsgGenerator对象创建MqMsgDTO对象
public class RabbitSenderImpl implements RabbitSender {
@Autowired
private MqMsgGenerator msgGenerator;
/**
* <p>
* 转换为MsgDTO
* </p>
* @author daiqi
* @date 2019/7/15 11:02
* @param data : 传输的数据
* @param dataType : 标识该数据的数据类型
* @return com.lxzl.skull.mq.common.pojo.dto.MqMsgDTO
*/
protected MqMsgDTO convertToMsgDTO(Object data, MqDataType dataType) {
MqMsgDTO msgDTO;
if (data instanceof MqMsgDTO) {
msgDTO = (MqMsgDTO) data;
} else {
msgDTO = msgGenerator.generateMqMsg(data);
msgDTO.setDataType(dataType);
}
return msgDTO;
}
}
配置自定义MqMsgGenerator属性
- 配置编号属性和编号生成器属性
sika:
code:
mq:
msg:
generator:
no-properties: # 配置编号属性
prefix: MQN # 编号前缀
suffix-count: 6 # 编号后缀的数量
no-generator: # 配置编号生成器属性
delimiter: - # 配置编号生成时的分隔符