Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
sika-code edited this page Jul 20, 2019 · 1 revision

mq【消息队列公共组件】

What

  • 消息队列公共组件

Why

  • 封装消息队列公共交互对象
  • 减少重复性工作
  • 规范消息队列交互方式

How

  • 封装通用的消息交互对象
  • 规范消息对象的生成规则
  • 规范消息对象的格式

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: - # 配置编号生成时的分隔符

Clone this wiki locally

AltStyle によって変換されたページ (->オリジナル) /