Google Cloud Functions
Поддерживается только производитель
Компонент Google Functions обеспечивает доступ к Google Cloud Functions (opens in a new tab) через клиент Google Cloud Functions для Java (opens in a new tab) .
Пользователям Maven необходимо добавить следующую зависимость в свой pom.xml для этого компонента:
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-google-functions</artifactId>
<!-- use the same version as your Camel core version -->
<version>x.x.x</version>
</dependency>Authentication Configuration
Аутентификация компонента Google Functions предназначена для использования с учётными записями сервисов GCP. Подробнее см. в разделе «Аутентификация в Google Cloud» (opens in a new tab) .
Имея ключ учётной записи службы , вы можете предоставить учётные данные для аутентификации коду приложения. Учётные данные безопасности Google можно задать через конечную точку компонента:
String endpoint = "google-functions://myCamelFunction?serviceAccountKey=/home/user/Downloads/my-key.json";Или установив переменную окружения GOOGLE_APPLICATION_CREDENTIALS:
export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/my-key.json"
URI Format
google-functions://functionName[?options]
Вы можете добавить параметры запроса к URI в следующем формате:?options=value&option2=value&…
Например, чтобы вызвать функцию myCamelFunctionиз проекта myProjectи местоположения us-central1, используйте следующий фрагмент:
from("direct:start")
.to("google-functions://myCamelFunction?project=myProject&location=us-central1&operation=callFunction&serviceAccountKey=/home/user/Downloads/my-key.json");Configuring Options
Компоненты Camel настраиваются на двух отдельных уровнях:
-
уровень компонентов
-
уровень конечной точки
Configuring Component Options
На уровне компонентов задаются общие и общие конфигурации, которые затем наследуются конечными точками. Это самый высокий уровень конфигурации.
Например, компонент может иметь настройки безопасности, учетные данные для аутентификации, URL-адреса для сетевого подключения и т. д.
У некоторых компонентов всего несколько параметров, а у других -- много. Поскольку компоненты обычно имеют предустановленные значения по умолчанию, которые широко используются, зачастую вам может потребоваться настроить лишь несколько параметров компонента, а то и вовсе ни одного.
Вы можете настроить компоненты, используя:
-
Компонент DSL (opens in a new tab) .
-
в файле конфигурации (
application.propertiesфайлы*.yaml, и т.д.). -
непосредственно в коде Java.
Configuring Endpoint Options
астройка конечных точек обычно занимает больше времени, поскольку у них есть множество параметров. Эти параметры помогают вам настроить функции конечной точки. Параметры также классифицируются по тому, используется ли конечная точка как потребитель ( от ), как производитель ( от ) или и то, и другое.
Конечные точки чаще всего настраиваются непосредственно в URI конечной точки в виде параметров пути и запроса . Вы также можете использовать Endpoint DSL (opens in a new tab) и DataFormat DSL (opens in a new tab) в качестве типобезопасного способа настройки конечных точек и форматов данных в Java.
Хорошей практикой при настройке параметров является использование заполнителей свойств (opens in a new tab) .
Заполнители свойств обеспечивают несколько преимуществ:
-
Они помогают предотвратить использование жестко запрограммированных URL-адресов, номеров портов, конфиденциальной информации и других настроек.
-
Они позволяют вынести конфигурацию за пределы кода.
-
Они помогают коду стать более гибким и пригодным для повторного использования.
В следующих двух разделах перечислены все параметры, сначала для компонента, а затем для конечной точки.
Component Options
The Google Cloud Functions component supports 2 options, which are listed below.
lazyStartProducer (producer)
-
Следует ли запускать производитель в режиме ленивого запуска (при первом сообщении). Запуск в режиме ленивого запуска позволяет разрешить запуск CamelContext и маршрутов в ситуациях, когда производитель может выйти из строя при запуске, что приведет к сбою запуска маршрута. Отложив запуск в режим ленивого запуска, можно обработать сбой запуска во время маршрутизации сообщений с помощью обработчиков ошибок маршрутизации Camel. Имейте в виду, что после обработки первого сообщения создание и запуск производителя могут занять некоторое время и увеличить общее время обработки.
-
По умолчанию: false
-
Тип: boolean
autowiredEnabled (advanced)
-
Включено ли автоматическое связывание. Это используется для параметров автоматического связывания (параметр должен быть помечен как autowired) путём поиска в реестре экземпляра соответствующего типа, который затем настраивается в компоненте. Это может использоваться для автоматической настройки источников данных JDBC, фабрик JMS-подключений, клиентов AWS и т. д.
-
По умолчанию: true
-
Тип: boolean
Endpoint Options
Конечная точка Google Cloud Functions настраивается с использованием синтаксиса URI:
google-functions:functionName
Со следующими параметрами пути и запроса :
Path Parameters (1 parameters)
functionName (common)
-
Обязательно Имя функции, определенное пользователем.
-
По умолчанию:
-
Тип: String
Query Parameters (7 parameters)
serviceAccountKey (common)
-
Обязательно Имя функции, определенное пользователем.
-
По умолчанию:
-
Тип: String
location (producer)
-
Тип: Местоположение (регион) облака Google, где расположена функция.
-
По умолчанию:
-
Тип: String
operation (producer)
-
Операция, которую необходимо выполнить над производителем.
Значения перечисления:
-
listFunctions
-
getFunction
-
callFunction
-
generateDownloadUrl
-
generateUploadUrl
-
createFunction
-
updateFunction
-
deleteFunction
-
-
По умолчанию:
-
Тип: GoogleCloudFunctionsOperations
pojoRequest (producer)
-
Тип: Указывает, является ли запрос запросом pojo.
-
По умолчанию: false
-
Тип: boolean
project (producer)
-
Имя проекта Google Cloud, в котором находится функция.
-
По умолчанию:
-
Тип: String
lazyStartProducer (producer (advanced))
-
Следует ли запускать производитель в режиме ленивого запуска (при первом сообщении). Запуск в режиме ленивого запуска позволяет разрешить запуск CamelContext и маршрутов в ситуациях, когда производитель может выйти из строя при запуске, что приведет к сбою запуска маршрута. Отложив запуск в режим ленивого запуска, можно обработать сбой запуска во время маршрутизации сообщений с помощью обработчиков ошибок маршрутизации Camel. Имейте в виду, что после обработки первого сообщения создание и запуск производителя могут занять некоторое время и увеличить общее время обработки.
-
По умолчанию: false
-
Тип: boolean
client (advanced)
-
Autowired Клиент, который будет использоваться при вызове службы.
-
По умолчанию:
-
Тип: CloudFunctionsServiceClient
Usage
Message Headers
Компонент Google Cloud Functions поддерживает 5 заголовков сообщений, которые перечислены ниже:
GoogleCloudFunctionsOperation (producer)
Constant: OPERATION (opens in a new tab)
-
Операция, которую необходимо выполнить.
Значения перечисления:
-
listFunctions
-
getFunction
-
callFunction
-
generateDownloadUrl
-
generateUploadUrl
-
createFunction
-
updateFunction
-
deleteFunction
-
-
По умолчанию:
-
Тип: GoogleCloudFunctionsOperations
GoogleCloudFunctionsEntryPoint (producer)
Constant: ENTRY_POINT (opens in a new tab)
-
Тип: Имя функции (как определено в исходном коде), которая будет выполнена. Используется для операции createFunction.
-
По умолчанию:
-
Тип: String
GoogleCloudFunctionsRuntime (producer)
Constant: RUNTIME (opens in a new tab)
-
Среда выполнения, в которой будет запущена функция. Возможные значения: nodejs10 nodejs12 nodejs14 python37 python38 python39 go111 go113 java11 dotnet3 ruby26 nodejs6 nodejs8 Используется для операции createFunction..
-
По умолчанию:
-
Тип: String
GoogleCloudFunctionsSourceArchiveUrl (producer)
Constant: SOURCE_ARCHIVE_URL (opens in a new tab)
-
Тип: URL-адрес облачного хранилища Google, начинающийся с gs://, указывает на ZIP-архив, содержащий функцию. Используется для операции createFunction.
-
По умолчанию:
-
Тип: String
GoogleCloudFunctionsResponseObject (producer)
Constant: RESPONSE_OBJECT (opens in a new tab)
-
Объект ответа, полученный в результате вызова клиента Google Functions.
-
По умолчанию:
-
Тип: Object
Google Functions Producer operations
Компонент Google Functions обеспечивает следующую операцию на стороне производителя:
-
listFunctions
-
getFunction
-
callFunction
-
generateDownloadUrl
-
generateUploadUrl
-
createFunction
-
updateFunction
-
deleteFunction
Если вы не укажете операцию по умолчанию, производитель будет использовать callFunction ее.
Advanced component configuration
Если вам необходимо больше контроля над clientконфигурацией экземпляра, вы можете создать свой собственный экземпляр и ссылаться на него в конфигурации компонента Camel google-functions:
from("direct:start")
.to("google-functions://myCamelFunction?client=#myClient");Google Functions Producer Operation examples
ListFunctions: Эта операция вызывает клиент Google Functions и получает список облачных функций.
//list functions
from("direct:start")
.to("google-functions://myCamelFunction?serviceAccountKey=/home/user/Downloads/my-key.json&project=myProject&location=us-central1&operation=listFunctions")
.log("body:${body}")Эта операция получит список облачных функций для проекта myProjectи местоположения us-central1.
GetFunction: эта операция получает объект Cloud Functions
//get function
from("direct:start")
.to("google-functions://myCamelFunction?serviceAccountKey=/home/user/Downloads/my-key.json&project=myProject&location=us-central1&operation=getFunction")
.log("body:${body}")
.to("mock:result");Эта операция получит CloudFunctionобъект для проекта myProject, местоположение us-central1и functionName myCamelFunction.
CallFunction: эта операция вызывает функцию с помощью HTTP-запроса
//call function
from("direct:start")
.process(exchange -> {
exchange.getIn().setBody("just a message");
})
.to("google-functions://myCamelFunction?serviceAccountKey=/home/user/Downloads/my-key.json&project=myProject&location=us-central1&operation=callFunction")
.log("body:${body}")
.to("mock:result");GenerateDownloadUrl: эта операция генерирует подписанный URL для загрузки исходного кода развернутой функции.
//generate download url
from("direct:start")
.to("google-functions://myCamelFunction?serviceAccountKey=/home/user/Downloads/my-key.json&project=myProject&location=us-central1&operation=generateDownloadUrl")
.log("body:${body}")
.to("mock:result");GenerateUploadUrl:эта операция генерирует подписанный URL для загрузки исходного кода функции.
from("direct:start")
.to("google-functions://myCamelFunction?serviceAccountKey=/home/user/Downloads/my-key.json&project=myProject&location=us-central1&operation=generateUploadUrl")
.log("body:${body}")
.to("mock:result");createFunction: эта операция создает новую функцию.
from("direct:start")
.process(exchange -> {
exchange.getIn().setHeader(GoogleCloudFunctionsConstants.ENTRY_POINT, "com.example.Example");
exchange.getIn().setHeader(GoogleCloudFunctionsConstants.RUNTIME, "java11");
exchange.getIn().setHeader(GoogleCloudFunctionsConstants.SOURCE_ARCHIVE_URL, "gs://myBucket/source.zip");
})
.to("google-functions://myCamelFunction?serviceAccountKey=/home/user/Downloads/my-key.json&project=myProject&location=us-central1&operation=createFunction")
.log("body:${body}")
.to("mock:result");updateFunction: эта операция обновляет существующую функцию.
from("direct:start")
.process(exchange -> {
UpdateFunctionRequest request = UpdateFunctionRequest.newBuilder()
.setFunction(CloudFunction.newBuilder().build())
.setUpdateMask(FieldMask.newBuilder().build()).build();
exchange.getIn().setBody(request);
})
.to("google-functions://myCamelFunction?serviceAccountKey=/home/user/Downloads/my-key.json&project=myProject&location=us-central1&operation=updateFunction&pojoRequest=true")
.log("body:${body}")
.to("mock:result");deleteFunction: эта операция удаляет функцию с заданным именем из указанного проекта.
from("direct:start")
.to("google-functions://myCamelFunction?serviceAccountKey=/home/user/Downloads/my-key.json&project=myProject&location=us-central1&operation=deleteFunction")
.log("body:${body}")
.to("mock:result");Spring Boot Auto-Configuration
При использовании google-functions с Spring Boot обязательно используйте следующую зависимость Maven для поддержки автоматической настройки:
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-google-functions-starter</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>Компонент поддерживает 3 опции, которые перечислены ниже.
camel.component.google-functions.autowired-enabled
-
Тип: Включено ли автоматическое связывание. Это используется для параметров автоматического связывания (параметр должен быть помечен как autowired) путём поиска в реестре экземпляра соответствующего типа, который затем настраивается в компоненте. Это может использоваться для автоматической настройки источников данных JDBC, фабрик JMS-подключений, клиентов AWS и т. д.
-
По умолчанию: true
-
Тип: Boolean
camel.component.google-functions.enabled
-
Включить ли автоматическую настройку компонента google-functions. По умолчанию эта опция включена.
-
По умолчанию:
-
Тип: Boolean
camel.component.google-functions.lazy-start-producer
-
Следует ли запускать производитель в режиме ленивого запуска (при первом сообщении). Запуск в режиме ленивого запуска позволяет разрешить запуск CamelContext и маршрутов в ситуациях, когда производитель может выйти из строя при запуске, что приведет к сбою запуска маршрута. Отложив запуск в режим ленивого запуска, можно обработать сбой запуска во время маршрутизации сообщений с помощью обработчиков ошибок маршрутизации Camel. Имейте в виду, что после обработки первого сообщения создание и запуск производителя могут занять некоторое время и увеличить общее время обработки.
-
По умолчанию: false
-
Тип: Boolean