我试图将我自己的Spring云数据流自定义接收器部署到云代工厂。
我的依赖关系如下:
<dependencies>
<dependency>
<groupId>org.springframework.cloud.stream.app</groupId>
<artifactId>spring-cloud-starter-stream-sink-log</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-binder-rabbit</artifactId>
<version>1.2.0.RC1</version>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud.stream.app</groupId>
<artifactId>app-starters-core-dependencies</artifactId>
<version>1.2.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud.stream.app</groupId>
<artifactId>log-app-dependencies</artifactId>
<version>1.2.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
And the custom code is very basic as below :
@EnableBinding(Sink.class)
public class SinkConfiguration {
private static final Log logger = LogFactory.getLog(SinkConfiguration.class);
@ServiceActivator(inputChannel=Sink.INPUT)
public void loggerSink(String payload) {
logger.info("Hello, Rahul. The time is: " + payload);
}
}
我在部署此应用程序时看到的是创建了错误通道订阅者,但没有创建输入订阅者。因此,此应用程序未收到任何消息。此应用程序的源是带有休息控制器的自定义源。默认的开箱即用流媒体应用程序 - LogSink成功运行。但是我需要创建一个最好的东西来建造东西。有人看到我在这里缺少的问题吗?
答案 0 :(得分:1)
如果您的目标是创建一个全新的自定义接收器,则可以按照Spring Initializr过程将其开发为独立应用程序。这种方式很简单,在这种情况下您不需要使用现有的log-sink
启动器。
如果您要修补任何OOTB应用程序;在这种情况下,log-sink
,然后按patching procedure。注意导入配置类。除非你这样做,否则相关的app-starter的行为将无法启动。
此外,您似乎正在使用旧版本的兔子粘合剂。最好依赖Spring Initializr生成的工件,而不是手工制作依赖版本。