update(REQ-2516) - 实现 RPC 调用动作的 MQ 事件生产者

This commit is contained in:
wangli 2024-05-30 14:48:08 +08:00
parent 7bcacc1e19
commit e8b0980a0e

View File

@ -2,11 +2,12 @@ package cn.axzo.workflow.starter.mq.retry.producer;
import cn.axzo.framework.rocketmq.Event;
import cn.axzo.framework.rocketmq.EventProducer;
import java.io.Serializable;
import cn.axzo.workflow.common.enums.WorkflowEngineEventEnum;
import cn.axzo.workflow.common.model.response.mq.WorkflowEngineStarterRpcInvokeDTO;
import org.springframework.core.env.Environment;
/**
* TODO
* RPC 的调用动作的 MQ 事件生产者
*
* @author wangli
* @since 2024/5/22 10:02
@ -14,22 +15,25 @@ import java.io.Serializable;
public class RpcInvokeEventProducer {
private final EventProducer workflowEngineClientEventProducer;
private final String currentApplicationName;
public RpcInvokeEventProducer(EventProducer workflowEngineClientEventProducer) {
public RpcInvokeEventProducer(EventProducer workflowEngineClientEventProducer, Environment environment) {
this.workflowEngineClientEventProducer = workflowEngineClientEventProducer;
this.currentApplicationName = environment.getProperty("spring.application.name");
}
/**
* 发送 RPC 调用的事件
*
* @param shardingKey
* @param eventCode
* @param data
* @param eventEnum {@link WorkflowEngineEventEnum}
* @param data {@link WorkflowEngineStarterRpcInvokeDTO}
*/
public void send(String shardingKey, Event.EventCode eventCode, Serializable data) {
public void send(WorkflowEngineEventEnum eventEnum, WorkflowEngineStarterRpcInvokeDTO data) {
workflowEngineClientEventProducer.send(Event.builder()
.shardingKey(shardingKey)
.eventCode(eventCode)
.shardingKey(data.getMethodName())
.eventCode(eventEnum.getEventCode(currentApplicationName))
.targetId(data.getMethodName())
.targetType(eventEnum.getTag())
.data(data)
.build());
}