Я экспериментирую с 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
имеет НУЛЕВОЕ количество сообщений.
Цените любые указатели и предложения о том, как действовать, чтобы решить эту проблему.
Спасибо.
В TaskIntakeApplication отсутствует аннотация @EnableTaskLauncher.
@SpringBootApplication
@EnableTaskLauncher
public class PluralsightSpringcloudM3TaskintakeApplication {
public static void main(String[] args) {
SpringApplication.run(PluralsightSpringcloudM3TaskintakeApplication.class, args);
}
}
В моей текущей реализации было две проблемы:
В модулях приема и приема -> 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.
Я полагаю, что @EnableTaskLauncher должен быть с задачей стока. После того, как я внес предложенное изменение, я получил следующую ошибку: Поле taskLauncher в org.springframework.cloud.task.launcher.TaskLauncherSink требовало bean-объекта типа org.springframework.cloud.deployer.spi.task.TaskLauncher, который не удалось найти. Точка внедрения имеет следующие аннотации: - @ org.springframework.beans.factory.annotation.Autowired (Requ ired = true) Действие: Рассмотрите возможность определения bean-компонента типа org.springframework.cloud.deployer.spi.task.TaskLauncher 'в вашей конфигурации.