前言
上篇注册完成后,但是仍未激活。需要前往邮箱进行激活
查看RocketMq中的消息:
注册register()方法调用完成之后,只是往rocketMq发送了邮件消息体等内容。并没有真正消费消息,往目标邮箱发送邮件。
一、启动paascloud-provider-opc
1、初始化AliyunMqConfiguration
AliyunMqConfiguration.java 中,随着spring加载注入到容器
并且注入defaultMQPushConsumer这个bean
1.加载defaultMQPushConsumer()
@Bean
public DefaultMQPushConsumer defaultMQPushConsumer() throws MQClientException {
/**
* aliyun:
* rocketMq:
* enable: true
* reliableMessageConsumer: true
* reliableMessageProducer: false
* namesrvAddr: localhost:9876
* instanceName: paascloud-provider-opc
* consumerGroup: CID_OPC
* producerGroup: PID_OPC
*/
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer(paascloudProperties
.getAliyun().getRocketMq().getConsumerGroup());//CID_OPC
consumer.setNamesrvAddr(paascloudProperties.getAliyun().getRocketMq().getNamesrvAddr()); //localhost:9876
consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_LAST_OFFSET); //从最后一个offset开始消费
//"SEND_SMS_TOPIC" @"REGISTER_USER_AUTH_CODE",SEND_EMAIL_TOPIC" @"FORGOT_PASSWORD_AUTH_CODE"||"ACTIVE_USER"||"ACTIVE_USER_SUCCESS"||"RESET_LOGIN_PWD"||"RESET_USER_EMAIL"
String[] strArray = AliyunMqTopicConstants.ConsumerTopics.OPT.split(GlobalConstant.Symbol.COMMA);
for (String aStrArray : strArray) {
String[] topicArray = aStrArray.split(GlobalConstant.Symbol.AT);
String topic = topicArray[0]; //""SEND_EMAIL_TOPIC"
String tags = topicArray[1];//"FORGOT_PASSWORD_AUTH_CODE"||"ACTIVE_USER"||"ACTIVE_USER_SUCCESS"||"RESET_LOGIN_PWD"||"RESET_USER_EMAIL";
if (PublicUtil.isEmpty(tags)) {
tags = "*";
}
consumer.subscribe(topic, tags);//订阅
log.info("RocketMq OpcPushConsumer topic = {}, tags={}", topic, tags);
}
consumer.registerMessageListener(optPushConsumer); //OptPushMessageListener监听器
consumer.setConsumeThreadMax(2);
consumer.setConsumeThreadMin(2);
taskExecutor.execute(() -> {
try {
Thread.sleep(5000);
consumer.start();
log.info("RocketMq OpcPushConsumer OK.");
} catch (InterruptedException | MQClientException e) {
log.error("RocketMq OpcPushConsumer, 出现异常={}", e.getMessage(), e);
}
});
return consumer;
}
1)AliyunMqTopicConstants.ConsumerTopics.OPT
public static final String OPT = buildOpcConsumerTopics();
private static String buildOpcConsumerTopics() {
List<TopicObj> topicObjList = new ArrayList<>();
Set<String> sendSmsTagList = new HashSet<>();
sendSmsTagList.add(MqTagEnum.REGISTER_USER_AUTH_CODE.getTag()); //"REGISTER_USER_AUTH_CODE"
Set<String> sendEmailTagList = new HashSet<>();
sendEmailTagList.add(MqTagEnum.FORGOT_PASSWORD_AUTH_CODE.getTag()); //"FORGOT_PASSWORD_AUTH_CODE"
sendEmailTagList.add(MqTagEnum.ACTIVE_USER.getTag()); //"ACTIVE_USER"
sendEmailTagList.add(MqTagEnum.ACTIVE_USER_SUCCESS.getTag()); //"ACTIVE_USER_SUCCESS"
sendEmailTagList.add(MqTagEnum.RESET_LOGIN_PWD.getTag());//"RESET_LOGIN_PWD"
sendEmailTagList.add(MqTagEnum.RESET_USER_EMAIL.getTag());//"RESET_USER_EMAIL"
topicObjList.add(new TopicObj(MqTopicEnum.SEND_SMS_TOPIC.getTopic(), sendSmsTagList)); //"SEND_SMS_TOPIC" sendSmsTagList
topicObjList.add(new TopicObj(MqTopicEnum.SEND_EMAIL_TOPIC.getTopic(), sendEmailTagList));//"SEND_EMAIL_TOPIC" sendEmailTagList
Set<String> deleteMessageTag = new HashSet<>();
deleteMessageTag.add(MqTagEnum.DELETE_CONSUMER_MESSAGE.getTag());
deleteMessageTag.add(MqTagEnum.DELETE_PRODUCER_MESSAGE.getTag());
topicObjList.add(new TopicObj(MqTopicEnum.TPC_TOPIC.getTopic(), deleteMessageTag));//"TPC_TOPIC" deleteMessageTag
Set<String> mdcMqTag