java - 如何从 GCS 收听文件?是否可以在多节点应用程序中利用 GcsInboundFileSynchronizer 和 GcsStreamingMessageSource?
问题描述
我正在阅读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 主题并根据通知标头下载文件。它是更可靠的方法吗?
解决方案
推荐阅读
- java - 如何使用expect4j java库发送ctrl + u + enter和ctrl + v + enter?
- c++ - 如何终止 cin 在空格而不是回车上取值,因为它会导致程序转到下一行并且我希望它在同一行上?
- c - ntp 服务器丢包。怎么解决?选择不工作
- java - Java中根据文件名删除数据库表
- enterprise-architect - 如何为块的属性设置初始值(企业架构师)
- python - Jupyter Notebook 中无法识别软件包安装
- c# - c# - 如何将具有多个值的xml字段添加到字典中
- swift - 如何在 Swift 中按日期对 UITableView 中的单元格进行排序
- java - 使用 curl 访问 JMX 端口
- javascript - 任务:app:bundleReleaseJsAndAssets FAILED 资源 index.android.js 未找到