建设银行网站修改wordpress站点相关

当前位置: 首页 > news >正文

建设银行网站修改,wordpress站点相关,上海企业倒闭,国外专门做图像增强的网站通过发布订阅模式实现数据的异步处理#xff0c;比如异步处理邮件发送 新建SpringBoot项目 项目结构 . ├── pom.xml └── src└── main├── java│ └── com│ └── example│ └── demo│ ├── Application.java│ …通过发布订阅模式实现数据的异步处理比如异步处理邮件发送 新建SpringBoot项目 项目结构 . ├── pom.xml └── src└── main├── java│ └── com│ └── example│ └── demo│ ├── Application.java│ ├── config│ │ └── TaskPoolConfig.java│ ├── controller│ │ └── IndexController.java│ ├── entity│ │ └── EmailDto.java│ ├── event│ │ └── SendEmailEvent.java│ ├── listener│ │ └── SendEmailListener.java│ └── service│ ├── SendEmailService.java│ └── impl│ └── SendEmailServiceImpl.java└── resources├── application.yml├── static└── templatespom.xml ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.7.7/versionrelativePath/ !– lookup parent from repository –/parentgroupIdcom.example/groupIdartifactIddemo/artifactIdversion0.0.1-SNAPSHOT/versionnamedemo/namedescriptionDemo project for Spring Boot/descriptionpropertiesjava.version1.8/java.version/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-devtools/artifactIdscoperuntime/scopeoptionaltrue/optional/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIdconfigurationexcludesexcludegroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId/exclude/excludes/configuration/plugin/plugins/build/project Application.java package com.example.demo;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplication public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);} } TaskPoolConfig.java package com.example.demo.config;import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;import java.util.concurrent.Executor;/*** 线程池参数配置/ EnableAsync Configuration public class TaskPoolConfig {/* 自定义线程池/Beanpublic Executor taskExecutor() {//返回可用处理器的Java虚拟机的数量 12int i Runtime.getRuntime().availableProcessors();System.out.println(系统最大线程数 i);ThreadPoolTaskExecutor executor new ThreadPoolTaskExecutor();//核心线程池大小executor.setCorePoolSize(16);//最大线程数executor.setMaxPoolSize(20);//配置队列容量默认值为Integer.MAX_VALUEexecutor.setQueueCapacity(99999);//活跃时间executor.setKeepAliveSeconds(60);//线程名字前缀executor.setThreadNamePrefix(asyncServiceExecutor -);//设置此执行程序应该在关闭时阻止的最大秒数以便在容器的其余部分继续关闭之前等待剩余的任务完成他们的执行executor.setAwaitTerminationSeconds(60);//等待所有的任务结束后再关闭线程池executor.setWaitForTasksToCompleteOnShutdown(true);return executor;} }EmailDto.java package com.example.demo.entity;import lombok.Data;Data public class EmailDto {private String email;private String subject;private String content; } SendEmailEvent.java package com.example.demo.event;import com.example.demo.entity.EmailDto; import org.springframework.context.ApplicationEvent;/* 自定义事件/ public class SendEmailEvent extends ApplicationEvent {private EmailDto emailDto;public SendEmailEvent(EmailDto emailDto) {super(emailDto);this.emailDto emailDto;}public EmailDto getEmailDto() {return this.emailDto;} } SendEmailListener.java package com.example.demo.listener;import com.example.demo.entity.EmailDto; import com.example.demo.event.SendEmailEvent; import com.example.demo.service.SendEmailService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationListener; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component;/** 事件监听器*/ Component public class SendEmailListener implements ApplicationListenerSendEmailEvent {Autowiredprivate SendEmailService sendEmailService;AsyncOverridepublic void onApplicationEvent(SendEmailEvent event) {EmailDto emailDto event.getEmailDto();this.sendEmailService.sendEmail(emailDto);} } SendEmailService.java package com.example.demo.service;import com.example.demo.entity.EmailDto;public interface SendEmailService {void sendEmail(EmailDto emailDto); }SendEmailServiceImpl.java package com.example.demo.service.impl;import com.example.demo.entity.EmailDto; import com.example.demo.service.SendEmailService; import org.springframework.stereotype.Service;Service public class SendEmailServiceImpl implements SendEmailService {Overridepublic void sendEmail(EmailDto emailDto) {try {// 模拟耗时3秒Thread.sleep(3 * 1000);} catch (Exception e) {System.out.println(Email发送异常);}System.out.println(Email发送成功 emailDto);} } IndexController.java package com.example.demo.controller;import com.example.demo.entity.EmailDto; import com.example.demo.event.SendEmailEvent; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationEventPublisher; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController;RestController public class IndexController {Autowiredprivate ApplicationEventPublisher publisher;GetMapping(/sendEmail)public String sendEmail() {EmailDto emailDto new EmailDto();emailDto.setEmail(tomqq.com);emailDto.setSubject(邮件标题);emailDto.setContent(邮件内容);// 发布事件publisher.publishEvent(new SendEmailEvent(emailDto));return success;} } 参考 Spring事件机制 ApplicationEventPublisher