我正在努力解决工作流程如下的解决方案:
微服务已经存在,我们正在尝试扩展它以进行奇特的处理。我最初的切入是使用样本入门包中的Http Source,因为这是我不必创建的东西。问题是源没有向Spring Discovery服务器注册自己,因此没有做出总体假设就没有办法得到终点(就像它存在于端口XYZ的数据流服务器上一样)。
我们可以创建一个Queue端点,并直接将数据发送到接收外部事件的Queue源,并将其转发到SCDF队列。
如果DataFlow可以为我连接队列的开头,而不将微服务作为源重新打包,那将是多么棒的。
Spring Data Flow的主要问题是它在服务器启动时不会自动启动已部署的流,我们需要合理地确定微服务始终处于运行状态。
答案 0 :(得分:0)
服务器的生命周期与其部署的应用程序分离,这是故意的。
我没有按照您对数据流如何连接队列开头的想法,但根据您的描述,您可以执行以下操作:
您需要修改应用程序才能在eureka上注册,但这是一个非常简单的操作,只需几行代码:
您可以从流应用视角开始:https://start-scs.cfapps.io/,选择http源,您的活页夹,然后在Main添加spring-cloud-netflix库以及@EnableDiscoveryClient
引导课程
从http://start.spring.io开始选择Stream Rabbit或Stream Kafka,添加Web和netflix库,然后添加@EnableDiscoveryClient
和@EnableBinding
注释并创建一个简单的HTTP端点供您使用情况下。
无论如何应该是一个小小的补充。
你也可以在https://github.com/spring-cloud-stream-app-starters/http/issues打开一个问题,建议我们将@EnableDiscoveryClient添加到http源应用程序中,我们也可以考虑下一次迭代。
答案 1 :(得分:0)
我会尝试澄清几点。
上传图片 - >如果真的是新的 - >排队等待处理
在新的上传活动中,您需要处理图片。这里是similar use-case,但更多的是实时流媒体样式解决方案。这不是你想要做的,但我认为它可能有用。
将图像处理代码移植到Spring Cloud Stream应用程序就像添加@EnableBinding(Processor.class)
一样简单。它是相同的业务逻辑 - 无论您是单独运行它还是通过SCDF编排它,它仍然仍然是一个独立的微服务。但是,SCDF希望它是Source,Processor,Sink或Task应用程序类型。我们将打开它以支持任意的"功能" (lambdas)将来发布。
我们可以创建一个Queue端点,并直接将数据发送到接收外部事件的Queue源,并将其转发到SCDF队列。
这是标准解决方案之一。您可以直接使用队列/主题中的新事件(图像),并在我们在上一步中创建的图像处理器中处理它。 DSL中的named-channel support只能促进这一点。
如果DataFlow可以为我连接队列的开头,而不将微服务作为源重新打包,那将是多么棒的。
我不确定我明白这一点。如果我假设,你正在寻找"命名频道"作为源和支持。
Spring Data Flow的主要问题是它在服务器启动时不会自动启动已部署的流,我们需要合理地确定微服务始终处于运行状态。
当您在SCDF中部署Stream时,DSL中包含的所有单个步骤(即流定义)都将作为目标运行时中的独立应用程序(云代工厂,kubernetes等)进行解析和部署。部署后,将其留给运行应用程序以进行生命周期管理的平台。 SCDF不保留或跟踪应用程序状态。