gpt4 book ai didi

java - Spring Cloud 任务启动器不响应发送到 Rabbit 的新事件

转载 作者:行者123 更新时间:2023-12-01 18:47:18 26 4
gpt4 key购买 nike

我正在尝试设置一个非常基本的 Spring Cloud 任务示例,但我遇到任务启动器未接收事件的问题(我认为)。

使用最基本的示例发送事件:

@RestController
@EnableBinding(Source.class)
@SpringBootApplication
@RequiredArgsConstructor
public class Application {

private final Source source;

public static void main(final String[] args) {
SpringApplication.run(Application.class, args);
}

@RequestMapping(path = "/task", method = RequestMethod.GET)
public void sendRequest() {

final TaskLaunchRequest request =
new TaskLaunchRequest(
"maven://org.springframework.cloud.task.app:timestamp-task:jar:1.0.1.RELEASE",
null,
null,
null,
null);

final GenericMessage<TaskLaunchRequest> genericMessage = new GenericMessage<>(request);

this.source.output().send(genericMessage);
}
}

我可以确认这确实按预期将 TaskLunchRequest 发送给 Rabbit。

但是在另一端使用同样简单的示例不会产生任何结果

@EnableTaskLauncher
@SpringBootApplication
public class Application {

public static void main(final String[] args) {
SpringApplication.run(Application.class, args);
}
}

以及依赖项:

implementation 'org.springframework.cloud:spring-cloud-starter-task'
implementation 'org.springframework.cloud:spring-cloud-starter-stream-rabbit'
implementation 'org.springframework.cloud:spring-cloud-deployer-local:1.3.7.RELEASE'

我期待@EnableTaskLauncher继续并根据传入的maven url启动一个新的jar。

请注意,两个项目的 application.properties 均为空。我没有定义任何 channel 或任何东西,因为我看过的示例应用程序也没有任何特定的设置。

我还需要做些什么才能完成这项工作吗?

最佳答案

设法从大量博客文章和 GitHub 示例中解决这个问题。

看起来TaskLauncher正在监听输入,而我显然是通过输出发送消息。

解决方案是在您的配置中定义两个 channel

spring:
cloud:
stream:
bindings:
output:
destination: task-launcher

另一边

spring:
cloud:
stream:
bindings:
input:
destination: task-launcher

注意输出和输入之间的区别。

关于java - Spring Cloud 任务启动器不响应发送到 Rabbit 的新事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59804068/

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