1

저는 Learning of Spring 클라우드 태스크 및 SCDF에서 이렇게 묻습니다. 메시징 소스 (예 : RabbitMQ, Kafka)에 이벤트 기반의 스프링 클라우드 작업 실행

내가 이벤트 (예를 들어 메시지가 토끼 MQ에 게시)를 기반으로 내 SCT를 실행하기 위해 지팡이, 그래서 그것을 두 가지 방법으로 수행 할 수 있다고 생각 해요 :

  1. 이 소스를 작성하는 여론 조사 메시지 RabbitMQ에서 데이터를 스트리밍으로 보내면 스트림에서 데이터를 읽는 싱크를 만들고 데이터가 싱크 (소스 스트림에서)되면 바로 작업이 시작됩니다.

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

    이것이 가능한지 확실하지 않습니까?

  2. 다른 방법으로는 작업 시작 프로그램을 사용할 수 있습니다. 여기에서 작업 시작 관리자는 스트림으로 구성되며 리스너는 rabbitMQ에서 메시지를 폴링합니다. 메시지가 수신되면 트리거가 프로세스를 시작하고 tasklauncher가 작업을 시작합니다. 그러나 여기서 어떻게 메시지 데이터를 내 작업에 어떻게 가져올 지 확신 할 수 없습니까? TaskLaunchRequest에 데이터를 추가해야합니까? 업스트림 이벤트에 의해 작업을 시작

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

'streamcousumer'에 오타가 있습니까? 그렇다면 수정하여 수정하십시오 - 감사합니다. – halfer

답변

1

이미 지원하고 그것에 몇 가지 방법이합니다 - reference guide (샘플) 자세한 내용을 참조하시기 바랍니다가.

+0

Anandan 대단히 감사합니다. 그러나 스트림을 배포 할 때 배포되지 않은 것을보고 있습니다. 다음은 내가 한 조치들입니다. 1. 응용 프로그램 레지스터 - 이름 트리거 - 유형 소스 - 사용자 이름 : // org.springframework.cloud.task.app:timestamp-task:jar:1.0.1.RELEASE 2. app register --name 작업 시작 프로그램 - 로컬 - 유형 싱크 - 유리 maven : //org.springframework.cloud.stream. app : task-launcher-local-sink-kafka : jar : 1.0.0.BUILD-SNAPSHOT 3. 스트림 만들기 mytasklaunchertest - 정의 "triggertask --triggertask.uri = file : ///scdf-task2-helloworld-0.0 .1-SNAPSHOT.jar --trigger.fixed-delay = 5 | task-launcher-local "--deploy –

+0

여기서 런타임 상태를 알 수 없으며 때로는 tasklauncher 응용 프로그램이 배포 된 것을 볼 수 있지만 triggertask는 배포되지 않으므로 스트림도 있습니다. 배치되지 않았습니다. –

+0

다음은 로그입니다 : osctatTimestampTaskApplication : PID 6860이있는 intintdev07의 TimestampTaskApplication v1.0.0.BUILD-SNAPSHOT (/path/timestamp-task-1.0.0.BUILD-SNAPSHOT.jar은/path/foo-1474374281890의 sid1adm에 의해 시작되었습니다. /foo.triggertask) scaAnnotationConfigApplicationContext : org.spring[email protected]1f088fd4 닫기 : 시작 일자 osjeaAnnotationMBeanExporter : 등록 취소 JMX 노출 된 콩을 종료에 osctatTimestampTaskApplication : 3.189 초 –

0

다음은 내 질문에 대한 답변입니다. 여기 Sabby는 내 문제를 해결하는 데 많은 도움을주었습니다.

문제점 : tasklauncher/task-sink를 사용하여 내 작업을 트리거 할 수 없습니다. 또한 로그에서 정확한 정보를 얻지 못하고 로그 수준을 올바르게 설정하는 방법을 알지 못했습니다.

해결 방법 : Sabby와 SCT 사이트에서 제공하는 문서를 통해이 문제를 해결하고 POC 작업을 진행할 수있었습니다. 다음은 내가 수행 한 세부 단계입니다.

  1. 는 특성 파일을 참조하고 bitly에서

    --logging.level.org.springframework.cloud=DEBUG 
    --spring.config.location=file://scdf.properties 
    
  2. 수입 응용 프로그램으로 로그 레벨 변경을 설정하여 PostgreSQL 데이터베이스 내 SCDF을 시작했다.

    app import --uri [stream applications link][1] 
    
  3. 등록 작업 싱크 응용 프로그램

    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"