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