Geocoder
Поддерживается только производитель
Компонент Geocoder используется для поиска геокодов (широты и долготы) для заданного адреса или обратного поиска.
Компонент использует либо размещенный сервер Nominatim (opens in a new tab) , либо библиотеку Java API для Google Geocoder (opens in a new tab) .
Пользователям Maven необходимо добавить следующую зависимость для pom.xmlэтого компонента:
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-geocoder</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>URI format
geocoder:address:name[?options] geocoder:latlng:latitude,longitude[?options]
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
Компонент Geocoder поддерживает 3 параметра, которые перечислены ниже.
lazyStartProducer (producer)
-
Следует ли запускать производитель в режиме ленивого запуска (при первом сообщении). Запуск в режиме ленивого запуска позволяет разрешить запуск CamelContext и маршрутов в ситуациях, когда производитель может выйти из строя при запуске, что приведет к сбою запуска маршрута. Отложив запуск в режим ленивого запуска, можно обработать сбой запуска во время маршрутизации сообщений с помощью обработчиков ошибок маршрутизации Camel. Имейте в виду, что после обработки первого сообщения создание и запуск производителя могут занять некоторое время и увеличить общее время обработки.
-
По умолчанию: false
-
Тип: boolean
autowiredEnabled (advanced)
-
Включено ли автоматическое связывание. Это используется для параметров автоматического связывания (параметр должен быть помечен как autowired) путём поиска в реестре экземпляра соответствующего типа, который затем настраивается в компоненте. Это может использоваться для автоматической настройки источников данных JDBC, фабрик JMS-подключений, клиентов AWS и т. д.
-
По умолчанию: true
-
Тип: boolean
geoApiContext (advanced)
-
Конфигурация для API карт Google.
-
По умолчанию:
-
Тип: GeoApiContext
Endpoint Options
Конечная точка Geocoder настраивается с использованием синтаксиса URI:
geocoder:address:latlng
Со следующими параметрами пути и запроса :
Path Parameters (2 parameters)
address (producer)
-
Географический адрес, который должен начинаться с адреса:.
-
По умолчанию:
-
Тип: String
latlng (producer)
-
Тип: Геоширота и долгота, которые должны иметь префикс latlng:.
-
По умолчанию:
-
Тип: String
Query Parameters (15 parameters)
headersOnly (producer)
-
Стоит ли только дополнять Exchange заголовками, а тело оставить как есть.
-
По умолчанию: false
-
Тип: boolean
language (producer)
-
Какой язык использовать.
-
По умолчанию: en
-
Тип: String
serverUrl (producer)
-
URL-адрес сервера геокодера. Обязателен для сервера Nominatim.
-
По умолчанию:
-
Тип: String
type (producer)
-
Тип сервера геокодирования. Поддерживаются Nominatim и Google.
Значения перечисления:
-
NOMINATIM
-
GOOGLE
-
-
По умолчанию:
-
Тип: GeoCoderType
lazyStartProducer (producer (advanced))
-
Тип: Следует ли запускать производитель в режиме ленивого запуска (при первом сообщении). Запуск в режиме ленивого запуска позволяет разрешить запуск CamelContext и маршрутов в ситуациях, когда производитель может выйти из строя при запуске, что приведет к сбою запуска маршрута. Отложив запуск в режим ленивого запуска, можно обработать сбой запуска во время маршрутизации сообщений с помощью обработчиков ошибок маршрутизации Camel. Имейте в виду, что после обработки первого сообщения создание и запуск производителя могут занять некоторое время и увеличить общее время обработки.
-
По умолчанию: false
-
Тип: boolean
proxyAuthDomain (proxy)
-
Домен аутентификации прокси-сервера для доступа к серверу Google GeoCoding.
-
По умолчанию:
-
Тип: String
proxyAuthHost (proxy)
-
Узел аутентификации прокси-сервера для доступа к серверу Google GeoCoding.
-
По умолчанию:
-
Тип: String
proxyAuthMethod (proxy)
-
Тип: Метод аутентификации на сервере Google GeoCoding.
-
По умолчанию:
-
Тип: String
proxyAuthPassword (proxy)
-
Пароль прокси-сервера для доступа к серверу GeoCoding.
-
По умолчанию:
-
Тип: String
proxyAuthUsername (proxy)
-
Тип: Имя пользователя прокси-сервера для доступа к серверу GeoCoding.
-
По умолчанию:
-
Тип: String
proxyHost (proxy)
-
Прокси-хост для доступа к серверу GeoCoding.
-
По умолчанию:
-
Тип: String
proxyPort (proxy)
-
Тип: Прокси-порт для доступа к серверу GeoCoding.
-
По умолчанию:
-
Тип: Integer
apiKey (security)
-
API-ключ для доступа к Google. Обязателен для сервера Google GeoCoding.
-
По умолчанию:
-
Тип: String
clientId (security)
-
Тип: Идентификатор клиента для доступа к серверу Google GeoCoding.
-
По умолчанию:
-
Тип: String
clientKey (security)
-
Клиентский ключ для доступа к серверу Google GeoCoding.
-
По умолчанию:
-
Тип: String
Exchange data format
Message Headers
Компонент Geocoder поддерживает 11 заголовков сообщений, которые перечислены ниже:
CamelGeoCoderAddress (producer)
Constant: ADDRESS (opens in a new tab)
-
Тип: Отформатированный адрес.
-
По умолчанию:
-
Тип: String
CamelGeoCoderLatlng (producer)
Constant: LATLNG (opens in a new tab)
-
Широта и долгота местоположения. Разделены запятой.
-
По умолчанию:
-
Тип: String
CamelGeoCoderLat (producer)
Constant: LAT (opens in a new tab)
-
Тип: Широта местоположения.
-
По умолчанию:
-
Тип: String
CamelGeoCoderLng (producer)
Constant: LNG (opens in a new tab)
-
Долгота местоположения.
-
По умолчанию:
-
Тип: String
CamelGeoCoderStatus (producer)
Constant: STATUS (opens in a new tab)
-
Тип: Требуемый код статуса из библиотеки геокодера. Если статус -- GeocoderStatus.OK, то добавляются дополнительные заголовки.
Значения перечисления:
-
ERROR
-
INVALID_REQUEST
-
ACCESS_NOT_CONFIGURED
-
OK
-
OVER_QUERY_LIMIT
-
OVER_DAILY_LIMIT
-
REQUEST_DENIED
-
UNKNOWN_ERROR
-
ZERO_RESULTS
-
-
По умолчанию:
-
Тип: GeocoderStatus
CamelGeoCoderRegionCode (producer)
Constant: REGION_CODE (opens in a new tab)
-
Код региона.
-
По умолчанию:
-
Тип: String
CamelGeoCoderRegionName (producer)
Constant: REGION_NAME (opens in a new tab)
-
Тип: Название региона.
-
По умолчанию:
-
Тип: String
CamelGeoCoderCity (producer)
Constant: CITY (opens in a new tab)
-
Длинное название города.
-
По умолчанию:
-
Тип: String
CamelGeoCoderCountryLong (producer)
Constant: COUNTRY_LONG (opens in a new tab)
-
Тип: Длинное название страны.
-
По умолчанию:
-
Тип: String
CamelGeoCoderCountryShort (producer)
Constant: COUNTRY_SHORT (opens in a new tab)
-
Краткое название страны.
-
По умолчанию:
-
Тип: String
CamelGeoCoderPostalCode (producer)
Constant: POSTAL_CODE (opens in a new tab)
-
Тип: Почтовый индекс.
-
По умолчанию:
-
Тип: String
Обратите внимание, что не все заголовки могут быть предоставлены в зависимости от доступных данных и используемого режима ( addressпротив latlng).
Body using a Nominatim Server
Camel доставит тело как тип JSONv2.
Body using a Google Server
Camel вернет тело запроса как com.google.code.geocoder.model.GeocodeResponseтип.
Если адрес -- , "current"то ответ будет строковым, содержащим JSON-представление текущего местоположения.
Если параметр headersOnlyустановлен в значение , trueто тело сообщения остается как есть, и в Exchange добавляются только заголовки.
Examples
IВ примере ниже мы получаем широту и долготу Парижа, Франция.
from("direct:start")
.to("geocoder:address:Paris, France?type=NOMINATIM&serverUrl=https://nominatim.openstreetmap.org")Если вы предоставите заголовок с CamelGeoCoderAddressthen, который переопределит конфигурацию конечной точки, то для получения местоположения Копенгагена, Дания, мы можем отправить сообщение с заголовками, как показано ниже:
template.sendBodyAndHeader("direct:start", "Hello", GeoCoderConstants.ADDRESS, "Copenhagen, Denmark");Чтобы получить адрес по широте и долготе, мы можем сделать:
from("direct:start")
.to("geocoder:latlng:40.714224,-73.961452")
.log("Location ${header.CamelGeocoderAddress} is at lat/lng: ${header.CamelGeocoderLatlng} and in country ${header.CamelGeoCoderCountryShort}")Который будет регистрировать
Location 285 Bedford Avenue, Brooklyn, NY 11211, USA is at lat/lng: 40.71412890,-73.96140740 and in country US
Чтобы получить текущее местоположение с помощью Google GeoCoder, вы можете использовать «current» в качестве адреса, как показано ниже:
from("direct:start")
.to("geocoder:address:current")Spring Boot Auto-Configuration
При использовании геокодера с Spring Boot обязательно используйте следующую зависимость Maven для поддержки автоматической настройки:
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-geocoder-starter</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>Компонент поддерживает 4 опции, которые перечислены ниже.
camel.component.geocoder.autowired-enabled
-
Включено ли автоматическое связывание. Это используется для параметров автоматического связывания (параметр должен быть помечен как autowired) путём поиска в реестре экземпляра соответствующего типа, который затем настраивается в компоненте. Это может использоваться для автоматической настройки источников данных JDBC, фабрик JMS-подключений, клиентов AWS и т. д.
-
По умолчанию: true
-
Тип: Boolean
camel.component.geocoder.enabled
-
Включить ли автоматическую настройку компонента геокодера. По умолчанию эта опция включена.
-
По умолчанию:
-
Тип: Boolean
camel.component.geocoder.geo-api-context
-
Конфигурация для API Google Карт. Параметр имеет тип com.google.maps.GeoApiContext.
-
По умолчанию:
-
Тип: GeoApiContext
camel.component.geocoder.lazy-start-producer
-
Тип: Следует ли запускать производитель в режиме ленивого запуска (при первом сообщении). Запуск в режиме ленивого запуска позволяет разрешить запуск CamelContext и маршрутов в ситуациях, когда производитель может выйти из строя при запуске, что приведет к сбою запуска маршрута. Отложив запуск в режим ленивого запуска, можно обработать сбой запуска во время маршрутизации сообщений с помощью обработчиков ошибок маршрутизации Camel. Имейте в виду, что после обработки первого сообщения создание и запуск производителя могут занять некоторое время и увеличить общее время обработки.
-
По умолчанию: false
-
Тип: Boolean