Spring Cloud Task Launcher не отвечает на новые события, отправленные Rabbit - PullRequest
0 голосов
/ 18 января 2020

Я пытаюсь настроить очень простой c Пример задачи Spring Cloud, но у меня проблема с тем, что Task Launcher не получает события (я думаю).

Использование большинства базовых c образец для отправки событий:

@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 Кролику, как и ожидалось.

Однако использование столь же простого примера на другом конце не дает результатов

@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 до * На 1024 * вперед и запустите новый jar-файл на основе переданного maven url.

Обратите внимание, что application.properties для обоих проектов пустые. Я не определил ни один канал или что-либо еще, поскольку ни в одном из примеров приложений, на которые я смотрел, не было установлено ничего, определяющего c.

Что еще мне нужно сделать, чтобы эта работа?

1 Ответ

0 голосов
/ 19 января 2020

Удалось решить эту проблему благодаря большому количеству постов в блоге и примеров GitHub.

Похоже, из коробки TaskLauncher прослушивает input, и я, очевидно, отправлял сообщения через output.

Решение состоит в том, чтобы определить оба канала в вашей конфигурации как таковые

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

А с другой стороны

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

Обратите внимание на разницу между выходом и входом.

...