У меня есть приложение для потоковой передачи Java-лучей, которое я развертывал в потоке данных.Я использую ElasticsearchIO для вывода данных на экземпляр эластичного поиска.Мое приложение зависит от других классов Java, которые я поместил в тот же каталог, что и основное приложение, которое выполняет конвейер.Мое основное приложение создает экземпляры этих классов, и до сих пор это работало нормально, поскольку приложение правильно работает в потоке данных и выводит данные в мою базу данныхasticsearch.Я использовал maven для его развертывания, и теперь моему приложению необходимо указать путь к файлу pem.Чтобы приложение могло это сделать, оно должно существовать в обработчиках потока данных.Единственная проблема, с которой я столкнулся сейчас, - это получение потока данных для загрузки файла, так что код моих бегунов ссылается на него.
Ниже приведены некоторые вещи, которые я пытался заставить бегунам получить доступ к файлу.
Первым делом я попытался создать папку ресурсов в / src / main / resources и поместить туда файл.Затем я использовал getresource () для загрузки файла.Это не сработало.Я ssh'd в бегун потока данных в GCP, и не смог найти файл в системе.Кроме того, мое приложение не выводило никаких данных вasticsearch, поэтому я знаю, что оно работает неправильно.
Я подумал, что путь к каталогу с моим кодом находится в пути к классам, и я подумал, что любой файл вclasspath будет загружен участникам потока данных, поэтому я поместил файл в каталог, где находится мой код.Я развернул это в потоке данных, и в журналах не было ошибок, но мое приложение больше не выводило данные вasticsearch.
Затем я узнал о параметре конвейера файлового этапа.Когда я указал путь к файлу, он был загружен в мое место размещения, но имя файла было другим, к имени добавили хеш-значение.Кроме того, мое приложение не выводило данные вasticsearch.
Я думал, что это из-за того, что мои классы Java больше не были доступны для бегунов, поэтому мое основное приложение не могло получить к ним доступ.Поэтому я включил все свои файлы, указав путь к каждому из них, классы java и файл, в файлах для опций этапа.Я видел, что они были загружены в мое промежуточное местоположение, но похоже, что мое основное приложение все еще не могло создавать объекты из них или читать файл pem.
Затем я поместил файл в тот же каталог, что и мой Javaклассы, и указали, что каталог в файлах для этапа опция.Каталог загружен в мое промежуточное местоположение в виде jar-файла, но приложение все еще не выводит данные наasticsearch.
//This is the part of my pipeline where it needs access to the file /key.p12
.apply(ElasticsearchIO.write().withConnectionConfiguration(ElasticsearchIO.ConnectionConfiguration.create(new String[]{ "10.13.2.1:9200" }, "test-index", "test").withUsername("user1").withPassword("teamedward").withKeystorePath("/key.p12").withKeystorePassword("secretpass123")));
Кто-нибудь знает, как я могу получить бегуна для доступа к /key.p12Я чувствую, что так как filetostage действительно загружает файлы для бегуна (даже если они расположены в непонятной области файловой системы бегуна и имена файлов изменены), возможно, это мой лучший вариант.Но как мне заставить мой основной Java-класс создавать экземпляры объектов из этих классов, которые загружены?