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.Event;
import cn.axzo.framework.rocketmq.EventConsumer; 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.api.mq.CardPresetButtonPressedMessage;
import cn.axzo.msg.center.mq.ConsumerIsolation; import cn.axzo.msg.center.mq.ConsumerIsolation;
import cn.axzo.msg.center.mq.IsolationMQListener;
import cn.axzo.msg.center.service.enums.MqMessageType; import cn.axzo.msg.center.service.enums.MqMessageType;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
/** /**
@ -16,24 +14,21 @@ import org.springframework.stereotype.Component;
*/ */
@Slf4j @Slf4j
@Component @Component
@RequiredArgsConstructor public class CardPresetButtonSyncTodoHandler extends IsolationMQListener {
public class CardPresetButtonSyncTodoHandler implements EventHandler, InitializingBean {
private final EventConsumer eventConsumer;
private final TodoSyncCardService todoSyncCardService; private final TodoSyncCardService todoSyncCardService;
CardPresetButtonSyncTodoHandler(TodoSyncCardService todoSyncCardService) {
super(ConsumerIsolation.CARD_PRESET_BUTTON_CLICKED_SYNC_TODO,
MqMessageType.CARD_PRESET_BUTTON_PRESSED);
this.todoSyncCardService = todoSyncCardService;
}
@Override @Override
public void onEvent(Event event, EventConsumer.Context context) { public void onEventImpl(Event event, EventConsumer.Context context) {
if (ConsumerIsolation.getIsolation() != ConsumerIsolation.CARD_PRESET_BUTTON_CLICKED_SYNC_TODO)
return;
CardPresetButtonPressedMessage message = event.normalizedData(CardPresetButtonPressedMessage.class); CardPresetButtonPressedMessage message = event.normalizedData(CardPresetButtonPressedMessage.class);
log.info("received CardPresetButtonPressedMessage: {}", message); log.info("received CardPresetButtonPressedMessage: {}", message);
todoSyncCardService.syncCardPresetButtonPressed(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.Event;
import cn.axzo.framework.rocketmq.EventConsumer; 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.api.mq.PresetButtonPressedMessage;
import cn.axzo.msg.center.mq.ConsumerIsolation; import cn.axzo.msg.center.mq.ConsumerIsolation;
import cn.axzo.msg.center.mq.IsolationMQListener;
import cn.axzo.msg.center.service.enums.MqMessageType; import cn.axzo.msg.center.service.enums.MqMessageType;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
/** /**
@ -16,24 +14,21 @@ import org.springframework.stereotype.Component;
*/ */
@Slf4j @Slf4j
@Component @Component
@RequiredArgsConstructor public class TodoPresetButtonSyncCardHandler extends IsolationMQListener {
public class TodoPresetButtonSyncCardHandler implements EventHandler, InitializingBean {
private final EventConsumer eventConsumer;
private final TodoSyncCardService todoSyncCardService; private final TodoSyncCardService todoSyncCardService;
TodoPresetButtonSyncCardHandler(TodoSyncCardService todoSyncCardService) {
super(ConsumerIsolation.TODO_PRESET_BUTTON_CLICKED_SYNC_CARD,
MqMessageType.TODO_PRESET_BUTTON_PRESSED);
this.todoSyncCardService = todoSyncCardService;
}
@Override @Override
public void onEvent(Event event, EventConsumer.Context context) { public void onEventImpl(Event event, EventConsumer.Context context) {
if (ConsumerIsolation.getIsolation() != ConsumerIsolation.TODO_PRESET_BUTTON_CLICKED_SYNC_CARD)
return;
PresetButtonPressedMessage message = event.normalizedData(PresetButtonPressedMessage.class); PresetButtonPressedMessage message = event.normalizedData(PresetButtonPressedMessage.class);
log.info("received PresetButtonPressedMessage: {}", message); log.info("received PresetButtonPressedMessage: {}", message);
todoSyncCardService.syncTodoPresetButtonPressed(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.Event;
import cn.axzo.framework.rocketmq.EventConsumer; 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.api.mq.TodoUpdateMessage;
import cn.axzo.msg.center.mq.ConsumerIsolation; 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.BizCategoryEnum;
import cn.axzo.msg.center.service.enums.MqMessageType; import cn.axzo.msg.center.service.enums.MqMessageType;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
/** /**
@ -17,14 +15,17 @@ import org.springframework.stereotype.Component;
*/ */
@Slf4j @Slf4j
@Component @Component
@RequiredArgsConstructor class TodoSyncCardBizHandler extends IsolationMQListener {
class TodoSyncCardBizHandler implements EventHandler, InitializingBean {
private final EventConsumer eventConsumer;
private final TodoSyncCardService todoSyncCardService; private final TodoSyncCardService todoSyncCardService;
TodoSyncCardBizHandler(TodoSyncCardService todoSyncCardService) {
super(ConsumerIsolation.TODO_SYNC_CARD_BIZ, MqMessageType.TODO_STATE_UPDATE);
this.todoSyncCardService = todoSyncCardService;
}
@Override @Override
public void onEvent(Event event, EventConsumer.Context context) { public void onEventImpl(Event event, EventConsumer.Context context) {
TodoUpdateMessage message; TodoUpdateMessage message;
try { try {
message = event.normalizedData(TodoUpdateMessage.class); message = event.normalizedData(TodoUpdateMessage.class);
@ -32,15 +33,8 @@ class TodoSyncCardBizHandler implements EventHandler, InitializingBean {
log.warn("parse message error. event={}", event, e); log.warn("parse message error. event={}", event, e);
return; return;
} }
if (ConsumerIsolation.getIsolation() == ConsumerIsolation.TODO_SYNC_CARD_BIZ if (message.getUpdatedTodo().getBizCategory() == BizCategoryEnum.OTHER)
&& message.getUpdatedTodo().getBizCategory() == BizCategoryEnum.OTHER) {
todoSyncCardService.onMessage(event, message); 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.Event;
import cn.axzo.framework.rocketmq.EventConsumer; 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.api.mq.TodoUpdateMessage;
import cn.axzo.msg.center.mq.ConsumerIsolation; 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.BizCategoryEnum;
import cn.axzo.msg.center.service.enums.MqMessageType; import cn.axzo.msg.center.service.enums.MqMessageType;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
/** /**
@ -17,14 +15,17 @@ import org.springframework.stereotype.Component;
*/ */
@Slf4j @Slf4j
@Component @Component
@RequiredArgsConstructor class TodoSyncCardFlowHandler extends IsolationMQListener {
class TodoSyncCardFlowHandler implements EventHandler, InitializingBean {
private final EventConsumer eventConsumer;
private final TodoSyncCardService todoSyncCardService; private final TodoSyncCardService todoSyncCardService;
TodoSyncCardFlowHandler(TodoSyncCardService todoSyncCardService) {
super(ConsumerIsolation.TODO_SYNC_CARD_FLOW, MqMessageType.TODO_STATE_UPDATE);
this.todoSyncCardService = todoSyncCardService;
}
@Override @Override
public void onEvent(Event event, EventConsumer.Context context) { public void onEventImpl(Event event, EventConsumer.Context context) {
TodoUpdateMessage message; TodoUpdateMessage message;
try { try {
message = event.normalizedData(TodoUpdateMessage.class); message = event.normalizedData(TodoUpdateMessage.class);
@ -32,15 +33,8 @@ class TodoSyncCardFlowHandler implements EventHandler, InitializingBean {
log.warn("parse message error. event={}", event, e); log.warn("parse message error. event={}", event, e);
return; return;
} }
if (ConsumerIsolation.getIsolation() == ConsumerIsolation.TODO_SYNC_CARD_FLOW if (message.getUpdatedTodo().getBizCategory() == BizCategoryEnum.FLOW)
&& message.getUpdatedTodo().getBizCategory() == BizCategoryEnum.FLOW) {
todoSyncCardService.onMessage(event, message); 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);
}