!40 添加spring事件驱动,自定义ApplicationEvent

* 消息发送整合SpringEvent
master
tonyjj 2 years ago committed by Java3y
parent a056325aa5
commit 34a3d04f1d

@ -0,0 +1,33 @@
package com.java3y.austin.handler.receiver.springeventbus;
import com.java3y.austin.common.domain.TaskInfo;
import com.java3y.austin.handler.receiver.service.ConsumeService;
import com.java3y.austin.support.constans.MessageQueuePipeline;
import com.java3y.austin.support.domain.MessageTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.stereotype.Component;
import java.util.List;
/**
*
*
* @author tony
* @date 2023/2/6 11:18
*/
@Component
@ConditionalOnProperty(name = "austin.mq.pipeline", havingValue = MessageQueuePipeline.SPRING_EVENT_BUS)
public class SpringEventBusReceiver {
@Autowired
private ConsumeService consumeService;
public void consume(List<TaskInfo> lists) {
consumeService.consume2Send(lists);
}
public void recall(MessageTemplate messageTemplate) {
consumeService.consume2recall(messageTemplate);
}
}

@ -0,0 +1,42 @@
package com.java3y.austin.handler.receiver.springeventbus;
import com.alibaba.fastjson.JSON;
import com.java3y.austin.common.domain.TaskInfo;
import com.java3y.austin.support.constans.MessageQueuePipeline;
import com.java3y.austin.support.domain.MessageTemplate;
import com.java3y.austin.support.mq.springeventbus.SpringEventBusEvent;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Service;
/**
*
*
* @author tony
* @date 2023/2/6 11:19
*/
@Service
@ConditionalOnProperty(name = "austin.mq.pipeline", havingValue = MessageQueuePipeline.SPRING_EVENT_BUS)
public class SpringEventBusReceiverListener implements ApplicationListener<SpringEventBusEvent> {
@Autowired
private SpringEventBusReceiver springEventBusReceiver;
@Value("${austin.business.topic.name}")
private String sendTopic;
@Value("${austin.business.recall.topic.name}")
private String recallTopic;
@Override
public void onApplicationEvent(SpringEventBusEvent event) {
String topic = event.getTopic();
String jsonValue = event.getJsonValue();
if (topic.equals(sendTopic)) {
springEventBusReceiver.consume(JSON.parseArray(jsonValue, TaskInfo.class));
} else if (topic.equals(recallTopic)) {
springEventBusReceiver.recall(JSON.parseObject(jsonValue, MessageTemplate.class));
}
}
}

@ -12,4 +12,6 @@ public interface MessageQueuePipeline {
String ROCKET_MQ = "rocketMq";
String RABBIT_MQ = "rabbitMq";
String SPRING_EVENT_BUS ="springEventBus";
}

@ -0,0 +1,18 @@
package com.java3y.austin.support.mq.springeventbus;
import lombok.Data;
import org.springframework.context.ApplicationEvent;
/**
*
*
* @author tony
* @date 2023/2/6 19:59
*/
@Data
public class SpringEventBusEvent extends ApplicationEvent {
public String topic;
public String jsonValue;
public String tagId;
}

@ -0,0 +1,39 @@
package com.java3y.austin.support.mq.springeventbus;
import com.java3y.austin.support.constans.MessageQueuePipeline;
import com.java3y.austin.support.mq.SendMqService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Service;
/**
*
*
* @author tony
* @date 2023/2/6 11:11
*/
@Slf4j
@Service
@ConditionalOnProperty(name = "austin.mq.pipeline", havingValue = MessageQueuePipeline.SPRING_EVENT_BUS)
public class SpringEventBusSendMqServiceImpl implements SendMqService {
@Autowired
private ApplicationContext applicationContext;
@Override
public void send(String topic, String jsonValue, String tagId) {
SpringEventBusEvent springEventBusEvent = new SpringEventBusEvent();
springEventBusEvent.setTopic(topic);
springEventBusEvent.setJsonValue(jsonValue);
springEventBusEvent.setTagId(tagId);
applicationContext.publishEvent(springEventBusEvent);
}
@Override
public void send(String topic, String jsonValue) {
send(topic,jsonValue,null);
}
}
Loading…
Cancel
Save