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