我正在阅读spring cloud gcp 存储文档
,并写道我可以使用GcsInboundFileSynchronizer
或GcsStreamingMessageSource
仅配置 spring bean 来监听新文件,如下所示:
@Bean
@InboundChannelAdapter(channel = "streaming-channel", poller = @Poller(fixedDelay = "5000"))
public MessageSource<InputStream> streamingAdapter(Storage gcs) {
GcsStreamingMessageSource adapter =
new GcsStreamingMessageSource(new GcsRemoteFileTemplate(new GcsSessionFactory(gcs)));
adapter.setRemoteDirectory("your-gcs-bucket");
return adapter;
}
我有几个问题:
- 如果我的应用程序在 2 个以上的节点上启动怎么办。文件将如何分发?循环赛?有没有办法配置批处理?是否可以接受重复的通知(例如在 pub sub 和任何其他 MQ 系统中)?
“新文件”是什么意思?假设我的存储桶包含 2 个文件(1.txt 和 2.txt)。然后我第一次开始申请。GcsStreamingMessageSource 是否会接受这些文件。或者假设应用程序由于某些原因而崩溃。然后我将一个新文件放入存储桶并再次启动应用程序。
有恢复能力吗?假设应用程序在文件处理时由于某种原因崩溃了。它会重新交付吗?
附言
现在我们使用发送到 pubsub 的存储桶通知。应用程序侦听 PubSub 主题并根据通知标头下载文件。它是更可靠的方法吗?