4

我正在阅读spring cloud gcp 存储文档 ,并写道我可以使用GcsInboundFileSynchronizerGcsStreamingMessageSource仅配置 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;
}

我有几个问题:

  1. 如果我的应用程序在 2 个以上的节点上启动怎么办。文件将如何分发?循环赛?有没有办法配置批处理?是否可以接受重复的通知(例如在 pub sub 和任何其他 MQ 系统中)?
  2. “新文件”是什么意思?假设我的存储桶包含 2 个文件(1.txt 和 2.txt)。然后我第一次开始申请。GcsStreamingMessageSource 是否会接受这些文件。或者假设应用程序由于某些原因而崩溃。然后我将一个新文件放入存储桶并再次启动应用程序。

  3. 有恢复能力吗?假设应用程序在文件处理时由于某种原因崩溃了。它会重新交付吗?

附言

现在我们使用发送到 pubsub 的存储桶通知。应用程序侦听 PubSub 主题并根据通知标头下载文件。它是更可靠的方法吗?

4

0 回答 0