Spring Cloud Task не запускается с Spring Cloud Stream с использованием RabbitMQ

Я экспериментирую с API Spring Cloud в рамках курса по микросервисам.

Чтобы настроить задачу без сервера, я использую Cloud Task, Cloud Stream (RabbitMQ) и Spring Web.

Для этого у меня настроены следующие проекты:

Бессерверная задача для выполнения - https://github.com/Omkar-Shetkar/pluralsight-springcloud-m3-task

Компонент для получения HTTP-запроса от пользователя и отправки в RabbitMQ - https://github.com/Omkar-Shetkar/pluralsight-springcloud-m3-taskintake

Компонент Sink для получения TaskLaunchRequest и пересылки в облачную задачу - https://github.com/Omkar-Shetkar/pluralsight-springcloud-m3-tasksink

Настроив указанные выше компоненты, убедитесь, что компонент задачи доступен в локальном репозитории maven. введите описание изображения здесь

После отправки запроса POST на /tasks в pluralsight.com.TaskController.launchTask(String) я вижу ответ HTTP.

введите описание изображения здесь

Но я не видел никаких обновлений в базе данных журналов задач, связанных с бессерверной задачей. Это означает, что сама задача не вызывается.

В консоли RabbitMQ я мог видеть, что соединения устанавливаются из компонентов приема и приема, но я не вижу, чтобы происходил обмен сообщениями.

введите описание изображения здесь

Очередь с именем tasktopic имеет НУЛЕВОЕ количество сообщений.

введите описание изображения здесь

Цените любые указатели и предложения о том, как действовать, чтобы решить эту проблему.

Спасибо.


person seeker    schedule 23.10.2018    source источник


Ответы (2)


В моей текущей реализации было две проблемы:

В модулях приема и приема -> application.properties ключ свойства привязки был неправильным.

Должен быть:

Во впускном модуле

spring.cloud.stream.bindings.output.destination=tasktopic

В модуле раковины

spring.cloud.stream.bindings.input.destination=tasktopic

Кроме того, версии локального облачного развертывателя несовместимы с модулями приемника pom.xml.

Обновлено то же самое:

   <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-deployer-local</artifactId>
        <version>1.3.0.RELEASE</version>
    </dependency>

С этими изменениями я могу получать сообщения RabbitMQ.

person seeker    schedule 27.10.2018

В TaskIntakeApplication отсутствует аннотация @EnableTaskLauncher.

@SpringBootApplication
@EnableTaskLauncher
public class PluralsightSpringcloudM3TaskintakeApplication {

    public static void main(String[] args) {
        SpringApplication.run(PluralsightSpringcloudM3TaskintakeApplication.class, args);
    }
}
person Ravikiran    schedule 26.10.2018
comment
Я полагаю, что @EnableTaskLauncher должен быть с задачей стока. После того, как я внес предложенное изменение, я получил следующую ошибку: Поле taskLauncher в org.springframework.cloud.task.launcher.TaskLauncherSink требовало bean-компонента типа org.springframework.cloud.deployer.spi.task.TaskLauncher, который не удалось найти. Точка внедрения имеет следующие аннотации: - @ org.springframework.beans.factory.annotation.Autowired (required = true) Действие: Рассмотрите возможность определения bean-компонента типа 'org.springframework.cloud.deployer.spi.task.TaskLauncher' в ваша конфигурация. - person seeker; 27.10.2018