REQ-3502: fix bugs
This commit is contained in:
parent
0565c17a24
commit
1b00f1d5b9
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user