1

Я новичок в изучении Весеннего облака Задача и SCDF, так что прошу об этом.Выполнение задачи весеннего облака, основанной на событии в источнике обмена сообщениями (т. Е. RabbitMQ, Kafka)

Я палочка, чтобы выполнить свою SCT на основе события (скажем, сообщение опубликовано в Rabbit MQ), поэтому я думаю, что это может быть сделано двумя способами:

  1. Создать источник, сообщение опросы из RabbitMQ и отправляет данные в поток, теперь создайте приемник, который считывает данные из потока, и как только данные опустится (из потока источника) будет запущена задача.

    create steam producer --definition "rabbitproducer | streamconsumer (This is @TaskEnabled)" 
    

    Не уверен, что это возможно?

  2. Другой способ может заключаться в использовании пусковой установки задач. Здесь task launcher будет сконфигурирован с потоком, и слушатель будет опросить сообщение от rabbitMQ. поэтому, когда сообщение получено, триггер инициирует процесс, и tasklauncher запустит задачу. Но вот не уверен, как я получу данные сообщения в свою задачу? Нужно ли добавлять данные в TaskLaunchRequest?

    create stream mystream --definition "rabbitmsgtrigger --uri:my task | joblauncher" 
    
+0

У вас есть опечатка в 'streamcousumer'? Если это так, пожалуйста, отредактируйте, чтобы исправить - спасибо. – halfer

ответ

1

Запуск задачи предвключенным события уже поддерживается и существует несколько подходов к нему - пожалуйста, ознакомьтесь с reference guide (и образец) для получения более подробной информации.

+0

Большое спасибо Анандану. Но когда я развертываю поток, я вижу, что он не развернут. Вот шаги, которые я сделал. 1. app register --name triggertask --type source --uri maven: // org.springframework.cloud.task.app:timestamp-task:jar:1.0.1.RELEASE 2. app register --name task-launcher-local --type sink --uri maven: //org.springframework.cloud.stream. app: task-launcher-local-sink-kafka: jar: 1.0.0.BUILD-SNAPSHOT 3. поток создать mytasklaunchertest --definition "triggertask --triggertask.uri = файл: ///scdf-task2-helloworld-0.0 .1-SNAPSHOT.jar --trigger.fixed-delay = 5 | task-launcher-local "--deploy –

+0

Здесь я вижу, что состояние runtime неизвестно, и иногда я вижу, что приложение tasklauncher развернуто, но функция triggertask никогда не развертывается, поэтому поток также не развернуты. –

+0

Вот журнал: osctatTimestampTaskApplication: Запуск TimestampTaskApplication v1.0.0.BUILD-SNAPSHOT на intintdev07 с PID 6860 (/path/timestamp-task-1.0.0.BUILD-SNAPSHOT.jar начато sid1adm в/path/foo-1474374281890 /foo.triggertask) scaAnnotationConfigApplicationContext: Закрытие org.spring[email protected]1f088fd4: дату запуска osjeaAnnotationMBeanExporter: Дерегистрация JMX-бобы подвергаются при выключении osctatTimestampTaskApplication: Начало TimestampTaskApplication в 3.189 секунд –

0

Вот полное объяснение относительно моего вопроса. Здесь Сабби очень помог мне решить мою проблему.

Проблема: я не смог запустить свою задачу с помощью tasklauncher/task-sink. В журнале также я не получал правильных данных, и я даже не знал, как правильно установить уровень журнала.

Решение: с помощью Sabby и документации, предоставленной на сайте SCT, я мог бы решить эту проблему и продвинулся вперед в моей работе POC. Ниже приведены подробные шаги, которые я сделал.

  1. начал свою SCDF с базой данных PostgreSQL, обращаясь к файлу свойств и настройка изменения уровня журнала, как

    --logging.level.org.springframework.cloud=DEBUG 
    --spring.config.location=file://scdf.properties 
    
  2. ввезенных приложения из Bitly.

    app import --uri [stream applications link][1] 
    
  3. Registered раковина задача приложения

    app register --name task-sink --type sink --uri file://tasksink-1.1.0.BUILD-SNAPSHOT.jar 
    
  4. Созданный поток, как:

    stream create mytasklaunchertest --definition "triggertask --triggertask.uri=https://my-archiva/myproject-scdf-task1/0.0.1-SNAPSHOT/myproject-scdf-task1-0.0.1-20160916.143611-1.jar --trigger.fixed-delay=5 | task-sink" 
    
  5. Развернутые поток:

    stream deploy foo --properties "app.triggertask.spring.rabbitmq.host=host,app.triggertask.spring.rabbitmq.username=user,app.triggertask.spring.rabbitmq.password=pass,app.triggertask.spring.rabbitmq.port=5672,app.triggertask.spring.rabbitmq.virtual-host=xxx"