DNS

Поддерживается только производитель

Это дополнительный компонент Camel для выполнения DNS-запросов с использованием DNSJava. Этот компонент представляет собой тонкий слой поверх DNSJava (opens in a new tab) . Он предлагает следующие операции:

  • ip: разрешить домен по его IP

  • lookup: для поиска информации о домене

  • dig: для выполнения DNS-запросов

* Требуется SUN JVM

Библиотека DNSJava требует запуска на SUN JVM..

Пользователям Maven необходимо добавить следующую зависимость для pom.xmlэтого компонента:

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-dns</artifactId>
    <version>x.x.x</version>
    <!-- use the same version as your Camel core version -->
</dependency>

URI format

Схема URI для компонента DNS выглядит следующим образом:

dns://operation[?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

Компонент DNS поддерживает 2 параметра, которые перечислены ниже.

lazyStartProducer (producer)

  • По умолчанию: Следует ли запускать производитель в режиме ленивого запуска (при первом сообщении). Запуск в режиме ленивого запуска позволяет разрешить запуск CamelContext и маршрутов в ситуациях, когда производитель может выйти из строя при запуске, что приведет к сбою запуска маршрута. Отложив запуск в режим ленивого запуска, можно обработать сбой запуска во время маршрутизации сообщений с помощью обработчиков ошибок маршрутизации Camel. Имейте в виду, что после обработки первого сообщения создание и запуск производителя могут занять некоторое время и увеличить общее время обработки.

  • По умолчанию: Тип: false

  • Тип: boolean

autowiredEnabled (advanced)

  • Включено ли автоматическое связывание. Это используется для параметров автоматического связывания (параметр должен быть помечен как autowired) путём поиска в реестре экземпляра соответствующего типа, который затем настраивается в компоненте. Это может использоваться для автоматической настройки источников данных JDBC, фабрик JMS-подключений, клиентов AWS и т. д.

  • По умолчанию: true

  • Тип: boolean

Endpoint Options

Конечная точка DNS настраивается с использованием синтаксиса URI:

dns:dnsType

Со следующими параметрами пути и запроса :

Path Parameters (1 parameters)

dnsType (producer)

  • Обязательно Тип поиска.

    Значения перечисления:

    • dig

    • ip

    • lookup

    • wikipedia

  • По умолчанию:

  • Тип: DnsType

Query Parameters (1 parameters)

lazyStartProducer (producer (advanced))

  • Следует ли запускать производитель в режиме ленивого запуска (при первом сообщении). Запуск в режиме ленивого запуска позволяет разрешить запуск CamelContext и маршрутов в ситуациях, когда производитель может выйти из строя при запуске, что приведет к сбою запуска маршрута. Отложив запуск в режим ленивого запуска, можно обработать сбой запуска во время маршрутизации сообщений с помощью обработчиков ошибок маршрутизации Camel. Имейте в виду, что после обработки первого сообщения создание и запуск производителя могут занять некоторое время и увеличить общее время обработки.

  • По умолчанию: false

  • Тип: boolean

Message Headers

The DNS component supports 6 message header(s), which is/are listed below:

dns.class (lookup dig)

Constant: DNS_CLASS (opens in a new tab)

  • DNS-класс поиска. Должен соответствовать значениям org.xbill.dns.DClass. Необязательно.

  • По умолчанию:

  • Тип: String

dns.name (lookup)

Constant: DNS_NAME (opens in a new tab)

  • Обязательно Имя для поиска.

  • По умолчанию:

  • Тип: String

dns.domain (ip)

Constant: DNS_DOMAIN (opens in a new tab)

  • Тип: Обязательно Доменное имя.

  • По умолчанию:

  • Тип: String

dns.server (dig)

Constant: DNS_SERVER (opens in a new tab)

  • Сервер, используемый для запроса. Если сервер не указан, будет использоваться сервер по умолчанию, заданный ОС. Необязательно.

  • По умолчанию:

  • Тип: String

dns.type (lookup dig)

Constant: DNS_TYPE (opens in a new tab)

  • Тип: Тип поиска. Должен соответствовать значениям org.xbill.dns.Type. Необязательно.

  • По умолчанию:

  • Тип: String

term (wikipedia)

Constant: TERM (opens in a new tab)

  • Обязательно Термин.

  • По умолчанию:

  • Тип:

Examples

IP lookup

<route id="IPCheck">
    <from uri="direct:start"/>
    <to uri="dns:ip"/>
</route>

Этот параметр ищет IP-адрес домена. Например, www.example.com (opens in a new tab) преобразуется в 192.0.32.10.

IP-адрес для поиска должен быть указан в заголовке с ключом "dns.domain"

DNS lookup

<route id="IPCheck">
    <from uri="direct:start"/>
    <to uri="dns:lookup"/>
</route>

Возвращает набор записей DNS, связанных с доменом.

Имя для поиска должно быть указано в заголовке с ключом "dns.name"

DNS Dig

Dig -- это утилита командной строки Unix для выполнения DNS-запросов.

<route id="IPCheck">
    <from uri="direct:start"/>
    <to uri="dns:dig"/>
</route>

Запрос должен быть указан в заголовке с ключом "dns.query".

Dns Activation Policy

Может DnsActivationPolicyиспользоваться для динамического запуска и остановки маршрутов на основе состояния DNS.

Если у вас есть экземпляры одного и того же компонента, работающие в разных регионах, вы можете настроить маршрут в каждом регионе так, чтобы он активировался только в том случае, если DNS указывает на этот регион.

Например, у вас может быть экземпляр в Нью-Йорке и экземпляр в Сан-Франциско. Чтобы активировать экземпляр в Нью-Йорке и остановить экземпляр в Сан-Франциско, нужно настроить CNAME-запись service.example.com (opens in a new tab) так, чтобы она указывала на nyc-service.example.com (opens in a new tab). При изменении CNAME-записи service.example.com (opens in a new tab) на sfo-service.example.com (opens in a new tab) экземпляр в Нью-Йорке остановит свои маршруты, а экземпляр в Сан-Франциско активирует их. Это позволяет переключаться между регионами без перезапуска компонентов.

 <bean id="dnsActivationPolicy" class="org.apache.camel.component.dns.policy.DnsActivationPolicy">
     <property name="hostname" value="service.example.com" />
     <property name="resolvesTo" value="nyc-service.example.com" />
     <property name="ttl" value="60000" />
     <property name="stopRoutesOnException" value="false" />
 </bean>

 <route id="routeId" autoStartup="false" routePolicyRef="dnsActivationPolicy">
 </route>

Spring Boot Auto-Configuration

При использовании DNS с Spring Boot обязательно используйте следующую зависимость Maven для поддержки автоматической настройки:

<dependency>
  <groupId>org.apache.camel.springboot</groupId>
  <artifactId>camel-dns-starter</artifactId>
  <version>x.x.x</version>
  <!-- use the same version as your Camel core version -->
</dependency>

Компонент поддерживает 3 опции, которые перечислены ниже

camel.component.dns.autowired-enabled

  • Тип: Включено ли автоматическое связывание. Это используется для параметров автоматического связывания (параметр должен быть помечен как autowired) путём поиска в реестре экземпляра соответствующего типа, который затем настраивается в компоненте. Это может использоваться для автоматической настройки источников данных JDBC, фабрик JMS-подключений, клиентов AWS и т. д.

  • По умолчанию: true

  • Тип: Boolean

camel.component.dns.enabled

  • Включить ли автоматическую настройку компонента DNS. По умолчанию эта опция включена.

  • По умолчанию:

  • Тип: Boolean

camel.component.dns.lazy-start-producer

  • Следует ли запускать производитель в режиме ленивого запуска (при первом сообщении). Запуск в режиме ленивого запуска позволяет разрешить запуск CamelContext и маршрутов в ситуациях, когда производитель может выйти из строя при запуске, что приведет к сбою запуска маршрута. Отложив запуск в режим ленивого запуска, можно обработать сбой запуска во время маршрутизации сообщений с помощью обработчиков ошибок маршрутизации Camel. Имейте в виду, что после обработки первого сообщения создание и запуск производителя могут занять некоторое время и увеличить общее время обработки.

  • По умолчанию: false

  • Тип: Boolean