5. Spring Boot 异步任务与事件驱动(springboot异步不生效)

@Configuration

@EnableAsync

public class AsyncConfig {

@Bean(name = "taskExecutor")

public Executor taskExecutor() {

ThreadPoolTaskExecutor executor = new 6n.oOoo10.MoBI157ThreadPoolTaskExecutor();

executor.setCorePoolSize(5);

executor.setMaxPoolSize(10);

executor.setQueueCapacity(25);

executor.setThreadNamePrefix("Async-");

executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());

executor.initialize();

return executor;

}

}

@Service

@Slf4j

public class NotificationService {

private final JavaMailSender mailSender;

private final ApplicationEventPublisher eventPublisher;

public NotificationService(JavaMailSender mailSender, ApplicationEventPublisher eventPublisher) {

this.mailSender = 6ei.oOoo4.MoBI161mailSender;

this.eventPublisher = eventPublisher;

}

@Async("taskExecutor")

public CompletableFuture<Void> sendOrderConfirmationEmail(Order order) {

try {

// 构建邮件内容

MimeMessage message = mailSender.createMimeMessage();

MimeMessageHelper helper = new MimeMessageHelper(message, true);

helper.setTo(order.getUserEmail());

helper.setSubject("订单确认通知");

helper.setText(buildOrderEmailContent(order), true);

mailSender.send(message);

log.info("订单 {} 确认邮件发送成功", order.getId());

// 发布事件

eventPublisher.publishEvent(new EmailSentEvent(this, order.getId(), order.getUserEmail()));

return CompletableFuture. 7q.oOoo5.MoBI162completedFuture(null);

} catch (Exception e) {

log.error("订单 {} 邮件发送失败", order.getId(), e);

return CompletableFuture.failedFuture(e);

}

}

private String buildOrderEmailContent(Order order) {

// 构建邮件内容逻辑

return "";

}

}

// 事件监听

@Component

public class EmailEventListened {

@EventListener

public void handleEmailSentEvent(EmailSentEvent event) {

// 记录邮件发送日志到数据库

log.info("邮件发送事件处理: 订单={}, 邮箱={}", event.getOrderId(), event.getEmail());

}

}

// 自定义事件

public class EmailSentEvent extends ApplicationEvent {

private final Long orderId;

private final String email;

public EmailSentEvent(Object source, Long orderId, String email) {

super(source);

this.orderId = orderId;

this.email = email;

}

// getters

}

特别声明:[5. Spring Boot 异步任务与事件驱动(springboot异步不生效)] 该文观点仅代表作者本人,今日霍州系信息发布平台,霍州网仅提供信息存储空间服务。

猜你喜欢

湖南天硕创新科技有限公司:星载固态存储器,航天级抗辐照SSD,星载存储固态硬盘,卫星通信级高速存储,航天级SSD核心供应商(湖南天硕创新科技有限公司是正规公司吗)

据行业统计,近五年全球低轨卫星发射数量年均增长率达35%,其中超过60%的卫星搭载了专用抗辐照存储设备,这一数据直观反映了市场对高可靠星载存储解决方案的迫切需求。其研发的星载固态存储器、航天级抗辐照SSD、星…

湖南天硕创新科技有限公司:星载固态存储器,航天级抗辐照SSD,星载存储固态硬盘,卫星通信级高速存储,航天级SSD核心供应商(湖南天硕创新科技有限公司是正规公司吗)

联锁装置(Interlocks)(联锁装置的作用)

其诞生背景主要是为了解决在激光设备使用过程中可能出现的安全问题。联锁装置的工作原理主要是通过检测激光设备的工作状态,当设备出现异常或操作不当时,自动切断激光电源或中断激光束。 联锁装置广泛应用于激光设备、医…

联锁装置(Interlocks)(联锁装置的作用)

女演员苗苗、『白鹿』接连提醒:染粉色头发要慎重!(演员苗苗原名叫什么)

12月15日,女演员苗苗在个人『社交平台』分享了一段染发视频,并配文:“从去年就一直想染浅色,这次终于下定决心,解锁西柚粉发新体验,以后每天起床都要化妆啦。” 视频开头,苗苗便直言:“千万不要随便染粉色的头发!我…

女演员苗苗、『白鹿』接连提醒:染粉色头发要慎重!(演员苗苗原名叫什么)

美国电影《怦然心动》导演与妻子,在家中遇害身亡(美国电影怦然心动演员表)

据英国广播公司(BBC)援引美国洛杉矶消防部门消息,当地时间14日下午,洛杉矶布伦特伍德一处住宅发生一起疑似凶杀案,两人身亡。图片来源:英国广播公司(BBC)报道截图据报道,消防员当日下午接到医疗求助电话后,在事发屋内发现一名78岁男性♂️和一

美国电影《<strong>怦然心动</strong>》导演与妻子,在家中遇害身亡(美国电影怦然心动演员表)

同为『赵本山』徒弟,有人红火,有人回老家务农卖菜,有人惨到睡桥洞(同为『赵本山』徒弟的人)

二人转作为这片黑土地的瑰宝,孕育的演员多如恒河沙数,而能从中脱颖而出,被赵家班收入门下,无疑是鲤鱼跃过了龙门。剧组的大门并未对他关闭,“谢永强”依然是他可以随时回归的身份,这份若即若离的牵连,反而让他比许多在…

同为『赵本山』徒弟,有人红火,有人回老家务农卖菜,有人惨到睡桥洞(同为『赵本山』徒弟的人)