REQ-3502: fix bugs

This commit is contained in:
yanglin 2025-01-17 11:04:54 +08:00
parent 0565c17a24
commit 1b00f1d5b9
5 changed files with 92 additions and 58 deletions

View File

@ -2,13 +2,11 @@ package cn.axzo.msg.center.message.service.todo.card;
import cn.axzo.framework.rocketmq.Event;
import cn.axzo.framework.rocketmq.EventConsumer;
import cn.axzo.framework.rocketmq.EventHandler;
import cn.axzo.msg.center.api.mq.CardPresetButtonPressedMessage;
import cn.axzo.msg.center.mq.ConsumerIsolation;
import cn.axzo.msg.center.mq.IsolationMQListener;
import cn.axzo.msg.center.service.enums.MqMessageType;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component;
/**
@ -16,24 +14,21 @@ import org.springframework.stereotype.Component;
*/
@Slf4j
@Component
@RequiredArgsConstructor
public class CardPresetButtonSyncTodoHandler implements EventHandler, InitializingBean {
public class CardPresetButtonSyncTodoHandler extends IsolationMQListener {
private final EventConsumer eventConsumer;
private final TodoSyncCardService todoSyncCardService;
CardPresetButtonSyncTodoHandler(TodoSyncCardService todoSyncCardService) {
super(ConsumerIsolation.CARD_PRESET_BUTTON_CLICKED_SYNC_TODO,
MqMessageType.CARD_PRESET_BUTTON_PRESSED);
this.todoSyncCardService = todoSyncCardService;
}
@Override
public void onEvent(Event event, EventConsumer.Context context) {
if (ConsumerIsolation.getIsolation() != ConsumerIsolation.CARD_PRESET_BUTTON_CLICKED_SYNC_TODO)
return;
public void onEventImpl(Event event, EventConsumer.Context context) {
CardPresetButtonPressedMessage message = event.normalizedData(CardPresetButtonPressedMessage.class);
log.info("received CardPresetButtonPressedMessage: {}", message);
todoSyncCardService.syncCardPresetButtonPressed(message);
}
@Override
public void afterPropertiesSet() {
eventConsumer.registerHandler(MqMessageType.CARD_PRESET_BUTTON_PRESSED.getEventCode(), this);
}
}

View File

@ -2,13 +2,11 @@ package cn.axzo.msg.center.message.service.todo.card;
import cn.axzo.framework.rocketmq.Event;
import cn.axzo.framework.rocketmq.EventConsumer;
import cn.axzo.framework.rocketmq.EventHandler;
import cn.axzo.msg.center.api.mq.PresetButtonPressedMessage;
import cn.axzo.msg.center.mq.ConsumerIsolation;
import cn.axzo.msg.center.mq.IsolationMQListener;
import cn.axzo.msg.center.service.enums.MqMessageType;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component;
/**
@ -16,24 +14,21 @@ import org.springframework.stereotype.Component;
*/
@Slf4j
@Component
@RequiredArgsConstructor
public class TodoPresetButtonSyncCardHandler implements EventHandler, InitializingBean {
public class TodoPresetButtonSyncCardHandler extends IsolationMQListener {
private final EventConsumer eventConsumer;
private final TodoSyncCardService todoSyncCardService;
TodoPresetButtonSyncCardHandler(TodoSyncCardService todoSyncCardService) {
super(ConsumerIsolation.TODO_PRESET_BUTTON_CLICKED_SYNC_CARD,
MqMessageType.TODO_PRESET_BUTTON_PRESSED);
this.todoSyncCardService = todoSyncCardService;
}
@Override
public void onEvent(Event event, EventConsumer.Context context) {
if (ConsumerIsolation.getIsolation() != ConsumerIsolation.TODO_PRESET_BUTTON_CLICKED_SYNC_CARD)
return;
public void onEventImpl(Event event, EventConsumer.Context context) {
PresetButtonPressedMessage message = event.normalizedData(PresetButtonPressedMessage.class);
log.info("received PresetButtonPressedMessage: {}", message);
todoSyncCardService.syncTodoPresetButtonPressed(message);
}
@Override
public void afterPropertiesSet() {
eventConsumer.registerHandler(MqMessageType.TODO_PRESET_BUTTON_PRESSED.getEventCode(), this);
}
}

View File

@ -2,14 +2,12 @@ package cn.axzo.msg.center.message.service.todo.card;
import cn.axzo.framework.rocketmq.Event;
import cn.axzo.framework.rocketmq.EventConsumer;
import cn.axzo.framework.rocketmq.EventHandler;
import cn.axzo.msg.center.api.mq.TodoUpdateMessage;
import cn.axzo.msg.center.mq.ConsumerIsolation;
import cn.axzo.msg.center.mq.IsolationMQListener;
import cn.axzo.msg.center.service.enums.BizCategoryEnum;
import cn.axzo.msg.center.service.enums.MqMessageType;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component;
/**
@ -17,14 +15,17 @@ import org.springframework.stereotype.Component;
*/
@Slf4j
@Component
@RequiredArgsConstructor
class TodoSyncCardBizHandler implements EventHandler, InitializingBean {
class TodoSyncCardBizHandler extends IsolationMQListener {
private final EventConsumer eventConsumer;
private final TodoSyncCardService todoSyncCardService;
TodoSyncCardBizHandler(TodoSyncCardService todoSyncCardService) {
super(ConsumerIsolation.TODO_SYNC_CARD_BIZ, MqMessageType.TODO_STATE_UPDATE);
this.todoSyncCardService = todoSyncCardService;
}
@Override
public void onEvent(Event event, EventConsumer.Context context) {
public void onEventImpl(Event event, EventConsumer.Context context) {
TodoUpdateMessage message;
try {
message = event.normalizedData(TodoUpdateMessage.class);
@ -32,15 +33,8 @@ class TodoSyncCardBizHandler implements EventHandler, InitializingBean {
log.warn("parse message error. event={}", event, e);
return;
}
if (ConsumerIsolation.getIsolation() == ConsumerIsolation.TODO_SYNC_CARD_BIZ
&& message.getUpdatedTodo().getBizCategory() == BizCategoryEnum.OTHER) {
if (message.getUpdatedTodo().getBizCategory() == BizCategoryEnum.OTHER)
todoSyncCardService.onMessage(event, message);
}
}
@Override
public void afterPropertiesSet() {
eventConsumer.registerHandler(MqMessageType.TODO_STATE_UPDATE.getEventCode(), this);
}
}

View File

@ -2,14 +2,12 @@ package cn.axzo.msg.center.message.service.todo.card;
import cn.axzo.framework.rocketmq.Event;
import cn.axzo.framework.rocketmq.EventConsumer;
import cn.axzo.framework.rocketmq.EventHandler;
import cn.axzo.msg.center.api.mq.TodoUpdateMessage;
import cn.axzo.msg.center.mq.ConsumerIsolation;
import cn.axzo.msg.center.mq.IsolationMQListener;
import cn.axzo.msg.center.service.enums.BizCategoryEnum;
import cn.axzo.msg.center.service.enums.MqMessageType;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component;
/**
@ -17,14 +15,17 @@ import org.springframework.stereotype.Component;
*/
@Slf4j
@Component
@RequiredArgsConstructor
class TodoSyncCardFlowHandler implements EventHandler, InitializingBean {
class TodoSyncCardFlowHandler extends IsolationMQListener {
private final EventConsumer eventConsumer;
private final TodoSyncCardService todoSyncCardService;
TodoSyncCardFlowHandler(TodoSyncCardService todoSyncCardService) {
super(ConsumerIsolation.TODO_SYNC_CARD_FLOW, MqMessageType.TODO_STATE_UPDATE);
this.todoSyncCardService = todoSyncCardService;
}
@Override
public void onEvent(Event event, EventConsumer.Context context) {
public void onEventImpl(Event event, EventConsumer.Context context) {
TodoUpdateMessage message;
try {
message = event.normalizedData(TodoUpdateMessage.class);
@ -32,15 +33,8 @@ class TodoSyncCardFlowHandler implements EventHandler, InitializingBean {
log.warn("parse message error. event={}", event, e);
return;
}
if (ConsumerIsolation.getIsolation() == ConsumerIsolation.TODO_SYNC_CARD_FLOW
&& message.getUpdatedTodo().getBizCategory() == BizCategoryEnum.FLOW) {
if (message.getUpdatedTodo().getBizCategory() == BizCategoryEnum.FLOW)
todoSyncCardService.onMessage(event, message);
}
}
@Override
public void afterPropertiesSet() {
eventConsumer.registerHandler(MqMessageType.TODO_STATE_UPDATE.getEventCode(), this);
}
}

View File

@ -0,0 +1,56 @@
package cn.axzo.msg.center.mq;
import cn.axzo.framework.rocketmq.BaseListener;
import cn.axzo.framework.rocketmq.Event;
import cn.axzo.framework.rocketmq.EventConsumer;
import cn.axzo.framework.rocketmq.EventHandler;
import cn.axzo.msg.center.service.enums.MqMessageType;
import lombok.RequiredArgsConstructor;
import org.apache.rocketmq.common.message.MessageExt;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
/**
* @author yanglin
*/
public abstract class IsolationMQListener extends BaseListener
implements RocketMQListener<MessageExt>, EventHandler, InitializingBean {
@Autowired
private EventConsumer eventConsumer;
private final ConsumerIsolation isolation;
private final Event.EventCode eventCode;
protected IsolationMQListener(ConsumerIsolation isolation, MqMessageType mqMessageType) {
this(isolation, mqMessageType.getEventCode());
}
protected IsolationMQListener(ConsumerIsolation isolation, Event.EventCode eventCode) {
this.isolation = isolation;
this.eventCode = eventCode;
}
@Override
public void onMessage(MessageExt message) {
ConsumerIsolation.setIsolation(isolation);
try {
super.onEvent(message, eventConsumer);
} finally {
ConsumerIsolation.clearIsolation();
}
}
@Override
public final void onEvent(Event event, EventConsumer.Context context) {
if (ConsumerIsolation.getIsolation() == isolation)
onEventImpl(event, context);
}
@Override
public void afterPropertiesSet() {
eventConsumer.registerHandler(eventCode, this);
}
public abstract void onEventImpl(Event event, EventConsumer.Context context);
}