Я читаю документацию по хранилищу gcp для Spring Cloud и там написано, что я могу прослушивать новые файлы, используя 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). Тогда я начинаю applciation в первый раз. Примет ли GcsStreamingMessageSource эти файлы. Или, скажем, приложение было разбито по некоторым причинам. Затем я помещаю новый файл в корзину и запускаю приложение снова.
Есть ли какие-нибудь возможности восстановления? скажем, приложение по какой-то причине зависло при обработке файла. Будет ли оно доставлено?
PS
На данный момент мы используем уведомления корзины, которые отправляются в pubsub. И приложение слушает PubSub topi c и загружает файл на основе заголовка уведомлений. Это более надежный способ?