Разъяснение о задаче, выполняемой как источник с потоком весеннего облака

При чтении эту документацию, кажется, мы можем написать микросервис с @EnableTask, у которого есть источник, чьи испускаемые сообщения записываются как шаг выполнения spring-cloud-task.

Я хотел бы получить несколько пояснений по этому утверждению, чтобы добиться этого без spring-cloud-dataflow:

  • Означает ли это, что если у нас есть bean-компонент Source с InboundChannelAdapter, нам не нужно объявлять CommandLineRunner?
  • По определению ожидается, что задача будет выдавать данные один раз, как воспроизвести это поведение с Source, опрашиваемым через регулярные промежутки времени?
  • Я попытался смешать внутри приложения spring-boot некоторые конфигурации с @EnableTask и AggregateApplicationBuilder, чтобы напрямую подключить мой Source к Sink без необходимости использовать Kafka или RabbitMQ, но кажется, что spring-cloud-task требует связующего. Есть ли способ пропустить это?

Спасибо


person Guillaume D.    schedule 04.04.2017    source источник


Ответы (1)


Что доступно сегодня, так это возможность прослушивать события жизненного цикла задачи и публиковать их в именованных (переопределяемых) каналах назначения для последующего анализа/обработки. Это просто автоматизируется, просто имея конкретную реализацию связывателя Spring Cloud Stream в пути к классам.

Означает ли это, что если у нас есть исходный компонент с InboundChannelAdapter, нам не нужно объявлять CommandLineRunner?

Похоже, вы пытаетесь смешивать аннотации Spring Cloud Stream (SCSt) и Spring Cloud Task (SCT) в своем загрузочном приложении. Это не то, как это предназначено для использования. Если вы еще этого не сделали, см. этот пример, чтобы получить представление.

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

Задача выполняется в течение «конечного периода времени», и это описывается тем, как долго работает ваша бизнес-логика, встроенная в приложение. Для запуска задачи также требуется некоторая форма триггера. Вы можете использовать планировщик для повторяющихся запусков по времени или запускать его через поток. Вот рассказ о том, как запустить поток в Spring Cloud Data Flow (SCDF).

Если вы хотите сделать это вне SCDF, вы все равно запустите triggertask самостоятельно и установите правильные env-var, чтобы приложения Stream + Task подключались через общий канал назначения.

... но кажется, что для задачи spring-cloud требуется связующее. Есть ли способ пропустить это?

Связь между SCSt и SCT осуществляется через зависимости spring-cloud-task-stream и spring-cloud-stream-binder-<type-of-binder>, и для этого нет других методов.

person Sabby Anandan    schedule 05.04.2017
comment
Спасибо за ваш ответ. - person Guillaume D.; 10.04.2017