gpt4 book ai didi

java - 当从 Quartz 调度程序调用函数时,如何将 Http 请求/响应作为参数传递给函数?

转载 作者:行者123 更新时间:2023-12-02 09:37:25 27 4
gpt4 key购买 nike

我正在运行 spring-boot 应用程序,我已经实现了quartz调度程序作为应用程序的一部分。

之前我有一个休息 Controller ,其端点例如 http://localhost:8080/GoogleMail/ {id} 触发如下所示的函数,并接受 HttpServletRequest/Response 作为参数以及我传递的 Pathvariable。

@PostMapping(value = "/GoogleMail/{id}", consumes = "application/json", produces = "application/json")
public String sendMail(HttpServletRequest request, HttpServletResponse response, @Valid @PathVariable(value = "id") String id,
@Valid @RequestBody MailMessage mailMsg) throws Exception {
if(id == null || id.isEmpty()) {
ResponseEntity.badRequest().build();
}
this.userId = id;

return GoogleMailIntegrationService.sendUserMails(request, response, id, mailMsg,
m -> !StringUtils.isBlank(mailMsg.getTo())
&& !StringUtils.isBlank(mailMsg.getSubject())
&& !StringUtils.isBlank(mailMsg.getBody()));
}

现在,我需要使用 Quartz 调度程序每 1 小时发布一次 JSON 正文来调用此函数,而不是进行 REST 调用。可能如下图

if (context.getJobDetail().getKey().getName().equalsIgnoreCase(JobName.READRESPONSE.toString())) {
// emailService.readMail();
try {
sendMail(Request, Response, id);
} catch (IOException e) {
e.printStackTrace();
}

我的问题:有没有办法使用 Scheduler 进行 REST 调用,或者是否可以通过直接传递请求/响应参数来进行 sendMail() 调用。

我不确定如何执行此操作,我花了大部分时间在发布之前浏览解决方案。

最佳答案

您可以使用RestTemplate通过以下方式对某些 Controller 端点进行请求调用:

if (context.getJobDetail().getKey().getName().equalsIgnoreCase(JobName.READRESPONSE.toString())) {
// emailService.readMail();
try {
RestTemplate restTemplate = new RestTemplate();
HttpEntity<MailMessage > request = new HttpEntity<>(mailMsg, new HttpHeaders());

ResponseEntity<String> responseEntityStr =
restTemplate.postForEntity(
String.format("http://localhost:7777/GoogleMail/%s", id),
request, String.class);

} catch (IOException e) {
e.printStackTrace();
}

关于java - 当从 Quartz 调度程序调用函数时,如何将 Http 请求/响应作为参数传递给函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57381589/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com