简要:分为三步
1.发布者调用用ApplicationContext.publishEvent方法
2.在需要监听的地方加入 @EventListener(IpcRespEvent.class)注解
3.注解的内部默认属性类的编写IpcRespEvent extends ApplicationEvent
第一步
import org.springframework.context.ApplicationContext;
@Slf4j
@Component
@RequiredArgsConstructor
public class ReceiverMsg {
private final ApplicationContext applicationContext;
applicationContext.publishEvent(new IpcRespEvent(parseResult));
第二步
package com.zkmeiling.biz.rabbitmq;
import com.zkmeiling.biz.rabbitmq.event.IpcRespEvent;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Service;
/**
* 用法例子
*
* @author WeiWei
* @date 2022/10/21
*/
@Service
public class Tutil {
@EventListener(IpcRespEvent.class)
public void ipcRespResult(IpcRespEvent ipcRespEvent) {
System.out.println("ipcRespEvent = " + ipcRespEvent.toString());
}
}
第三步
package com.zkmeiling.biz.rabbitmq.event;
import com.zkmeiling.biz.rabbitmq.dto.IpcRespEventParseDto;
import lombok.ToString;
import org.springframework.context.ApplicationEvent;
/**
* ipc resp事件
*
* @author WeiWei
* @date 2022/10/21
*/
@ToString
public class IpcRespEvent extends ApplicationEvent {
/**
* ipc resp事件dto
*/
private IpcRespEventParseDto ipcRespEventParseDto;
public IpcRespEvent(IpcRespEventParseDto ipcRespEventParseDto) {
super(ipcRespEventParseDto.getData());
this.ipcRespEventParseDto = ipcRespEventParseDto;
}
}
package com.zkmeiling.biz.rabbitmq.dto;
import lombok.Builder;
import lombok.Data;
/**
* ipc resp事件dto
*
* @author WeiWei
* @date 2022/10/21
*/
@Data
@Builder
public class IpcRespEventParseDto {
/**
* 类型
*/
private String type;
/**
* 数据
*/
private Object data;
/**
* 备注
*/
private String remark;
}