Kubernetes / Spring云数据streamstream> spring.cloud.stream.bindings.output.destination被生产者忽略
我试图运行一个基于http://cloud.spring.io/spring-cloud-dataflow/上解释的非常简单的例子的“Hello,world”Spring云数据stream。 我能够创build一个简单的源代码和接收器,并使用Kafka在我的本地SCDF服务器上运行它,因此,在此之前,所有内容都是正确的,并且在SCDF指定的主题中生成和使用消息。
现在,我正在尝试根据http://docs.spring.io/spring-cloud-dataflow-server-kubernetes/docs/current-SNAPSHOT/reference/htmlsingle/#中列出的说明将其部署到我的私有云中_getting_started 。 使用这个部署,我可以毫无问题地部署一个简单的“time | log”开箱即用的stream,但是我的示例失败了,因为生产者没有写入创buildpod时指定的主题(例如,spring.cloud.stream.bindings.output.destination = ntest33.nites-source9),但在主题“输出”。 我有一个与接收器组件类似的问题,它在“input”主题中创build并期望消息。
我使用仪表板创build了stream定义:
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-04-07 09:44:34,593 INFO main osicDirectChannel:81 – Channel'application.output'有1个用户。
问题是,如何恰当地覆盖必须产生/消耗消息的主题,或者使用什么属性和值来使这个工作在K8上?
更新:我有使用RabbitMQ类似的问题
2017-04-07T12:56:40.435405177Z 2017-04-07 12:56:40.435信息7 — [main] osintegration.channel.DirectChannel:Channel'application.output'有1个用户。
问题是我的docker形象。 我仍然不知道详细信息,但是使用在https://spring.io/guides/gs/spring-boot-docker/中指出的Dockerfile在Docker容器中实例化了两个进程,一个是参数,另一个是没有的,是正常运行时间,因此正在使用。
解决的办法是更换
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]
同
ENTRYPOINT [ "java", "-jar", "/app.jar" ]
它开始工作。 为什么这个例子表明了第一个入口点和为什么创build了2个进程,这是一个很好的理由,但其原因仍然超出了我的理解范围。
你能提供更多关于你如何设置configuration属性的细节? 这个function是非常基本的,所以这应该工作。 如果您正在使用stream定义进行设置,请使用stream定义更新您的问题。
频道名称保持“输出”,因为这是应用程序内部使用的。
- 用dockerfile克隆私人git回购
- Elastic Beanstalk多容器Docker环境:在两个API之间redirect请求
- oauth2client.client.AccessTokenRefreshError:invalid_grant只在Docker中
- docker-compose pull x509:由未知权威机构签署的证书
- Docker容器没有TMPDIR环境variables
- 自动将新映像部署到docker群
- 如何检查docker实例在Bash中运行
- tar cv –files-from / dev / null | docker导入 – 从头开始“的工作?
- “没有这样的文件或目录”这个Dockerfile有什么问题?