0

다음에 설명 된 간단한 예제를 기반으로 "Hello, world"스프링 클라우드 데이터 흐름 스트림을 실행하려고합니다. . 저는 간단한 소스를 만들고 싱크대를 만들고 카프카를 사용하여 로컬 SCDF 서버에서 실행할 수 있습니다. 그래서 여기까지 모든 것이 정확하고 SCDF에 의해 지정된 주제에서 메시지가 생성되고 소비됩니다.Kubernetes/Spring Cloud 데이터 흐름 스트림> spring.cloud.stream.bindings.output.destination이 생성자에 의해 무시됩니다.

이제는 http://docs.spring.io/spring-cloud-dataflow-server-kubernetes/docs/current-SNAPSHOT/reference/htmlsingle/#_getting_started에 나열된 지침에 따라 개인용 클라우드에 배포하려고합니다. 이 배포를 사용하면 간단한 "time | log"를 즉시 사용할 수있는 스트림을 배포 할 수 있지만 제작자가 창을 만들 때 지정된 항목에 쓰지 않아서 예제가 실패합니다 (예 : , spring.cloud.stream.bindings.output.destination = ntest33.nites-source9) 주제 "output"에 있습니다. 싱크 구성 요소와 비슷한 문제가 있습니다. 싱크 구성 요소는 주제 "입력"에 메시지를 생성하고 예상합니다. 소스에 대한

nsource1 | log 

그리고 용기 인수는 다음과 같습니다 :

내가 대시 보드를 사용하여 스트림 정의를 만든 소스 구성 요소에 대한

--spring.cloud.stream.bindings.output.producer.requiredGroups=ntest34 
--spring.cloud.stream.bindings.output.destination=ntest34.nsource1 

코드가 패키지 XXXX입니다;

import java.text.SimpleDateFormat; 
import java.util.Date; 

import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.SpringBootApplication; 
import org.springframework.cloud.stream.annotation.EnableBinding; 
import org.springframework.cloud.stream.messaging.Source; 
import org.springframework.context.annotation.Bean; 
import org.springframework.integration.annotation.InboundChannelAdapter; 
import org.springframework.integration.core.MessageSource; 
import org.springframework.messaging.support.GenericMessage; 

@SpringBootApplication 
@EnableBinding(Source.class) 
public class HelloNitesApplication 
{ 
public static void main(String[] args) 
{ 
    SpringApplication.run(HelloNitesApplication.class, args); 
} 

@Bean 
@InboundChannelAdapter(value = Source.OUTPUT) 
public MessageSource<String> timerMessageSource() 
{ 
    return() -> new GenericMessage<>("Hello " + new SimpleDateFormat().format(new Date())); 
} 

그리고 로그에 내가 볼 수

명확하게

2017-04-07T09 : 44 : 34.596842965Z 2017년 4월 7일 09 : 44 : 34,593 INFO 주요 osicDirectChannel : 81 - 채널 ' application.output '에 1 명의 가입자가 있습니다.

질문 : 메시지를 생성/소비해야하는 항목이나 k8에서이 작업을 수행하는 데 사용할 속성 및 값을 올바르게 재정의하는 방법은 무엇입니까?

업데이트 : 56 : 40.435405177Z 2017년 4월 7일 12 : 56 : 40.435 INFO 7 --- [주] osintegration I는 RabbitMQ

2017-04-07T12을 사용하여 유사한 문제를 가지고있다. channel.DirectChannel : 'application.output'채널에 1 명의 가입자가 있습니다.

답변

2

문제가 내 도커 이미지 때문이었습니다. 나는 여전히 세부 사항을 모르지만 https://spring.io/guides/gs/spring-boot-docker/에 표시된 Dockerfile을 사용하여 도커 컨테이너에서 2 개의 프로세스를 인스턴스화했습니다. 하나는 매개 변수가 있고 다른 하나는 가동 시간이있는 것으로 사용되었으므로 사용되지 않았습니다.

솔루션

ENTRYPOINT [ "java", "-jar", "/app.jar" ] 

으로

ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ] 

을 대체하는 것이었다 그리고 그것은 일하기 시작했다.이 예제가 첫 번째 진입 점을 나타내는 이유와 2 개의 프로세스가 생성 된 이유가 틀림 없지만 이유는 여전히 내 이해를 초월합니다.

0

해당 구성 속성을 설정하는 방법에 대한 자세한 정보를 제공 할 수 있습니까? 이 기능은 꽤 기본적인 기능이므로 작동해야합니다. 스트림 정의를 사용하여 설정하는 경우 질문을 스트림 정의로 업데이트하십시오.

채널 이름은 응용 프로그램이 내부적으로 사용하는 것이므로 '출력'으로 남습니다.

+0

답변을 주셔서 감사합니다. 스트림 정의를 추가했습니다. –

+0

이미지 정의의 실수로 인해 SCDF가 포드에서 전달한 인수가 서비스에서 사용되지 않을 수 있습니까? https://spring.io/guides/gs/spring-boot-docker/에 따라 이미지를 만들었지 만 앱 시작 코드 소스 코드를 찾지 못했습니다. –