204 lines
10 KiB
Plaintext
204 lines
10 KiB
Plaintext
= План создания коннектора
|
||
|
||
Для создания полноценного коннектора необходимо создать bundle с такой структурой:
|
||
|
||
. _src/main/resource/template/<название endpoint>-in-connector.ftl_
|
||
. _src/main/resource/template/<название endpoint>-out-connector.ftl_
|
||
. _src/main/resource/OSGI-INF/blueprint/camel-context.xml_
|
||
. _pom.xml_
|
||
|
||
== Создание шаблона входного коннектора(in-connector)
|
||
|
||
_Входной коннектор_ - это коннектор, который получает сообщения из вне Entaxy.
|
||
|
||
_Шаблон входного коннектора_ - ftl файл, на основе которого шина будет создавать индивидуальные входные коннекторы для каждой системы, с помощью подстановки параметров, полученных от пользователя.
|
||
|
||
Пример созданного шаблона, где название endpoint - _example_:
|
||
_src/main/resource/template/example-in-connector.ftl_
|
||
[source,xml]
|
||
----
|
||
<?xml version="1.0" encoding="UTF-8"?>
|
||
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
|
||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||
xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">
|
||
|
||
<bean id="inConnector" class="ru.entaxy.esb.system.profile.commons.connectors.in.DirectVMInConnectorImpl">
|
||
<property name="endpointName" value="example"/>
|
||
<property name="systemName" value="[=systemName]"/>
|
||
</bean>
|
||
<service ref="inConnector" auto-export="interfaces">
|
||
<service-properties>
|
||
<entry key="endpointName" value="example"/>
|
||
<entry key="systemName" value="[=systemName]"/>
|
||
</service-properties>
|
||
</service>
|
||
|
||
<camelContext id="example-in-connector-[=systemName]-context" xmlns="http://camel.apache.org/schema/blueprint">
|
||
<route id="example-[=systemName]-connector">
|
||
<from uri="direct-vm:example-in-connector-[=systemName]"/>
|
||
<setHeader name="ESB.Endpoint.Name">
|
||
<constant>example</constant>
|
||
</setHeader>
|
||
<to uri="direct-vm:profile-[=systemName]-exit-dispatcher"/>
|
||
</route>
|
||
</camelContext>
|
||
|
||
</blueprint>
|
||
----
|
||
|
||
Создание и публикация бина: для связи коннектора с профилем, возможности получить весь список коннекторов определенного типа.
|
||
[source, xml]
|
||
----
|
||
<bean id="inConnector" class="ru.entaxy.esb.system.profile.commons.connectors.in.DirectVMInConnectorImpl">
|
||
<property name="endpointName" value="example"/>
|
||
<property name="systemName" value="[=systemName]"/>
|
||
</bean>
|
||
<service ref="inConnector" auto-export="interfaces">
|
||
<service-properties>
|
||
<entry key="endpointName" value="example"/>
|
||
<entry key="systemName" value="[=systemName]"/>
|
||
</service-properties>
|
||
</service>
|
||
----
|
||
|
||
Маршрут коннектора, который полученные сообщения отправляет на выходную точку профиля, к которой прикрепляется сгенерированный пользователем route.
|
||
[source, xml]
|
||
----
|
||
<route id="example-[=systemName]-in-connector">
|
||
<from uri="direct-vm:example-in-connector-[=systemName]"/>
|
||
<setHeader name="ESB.Endpoint.Name">
|
||
<constant>example</constant>
|
||
</setHeader>
|
||
<to uri="direct-vm:profile-[=systemName]-exit-dispatcher"/>
|
||
</route>
|
||
----
|
||
|
||
Начало маршрута входного коннектора может начинаться не с _"direct-vm:example-in-connector-[=systemName]"_, а получать сообщения, например, через определенную папку на диске.
|
||
|
||
Для того чтобы отправить сообщение в коннектор необходимо, получить все коннекторы определенного типа (example):
|
||
[source,xml]
|
||
----
|
||
<bean id="inConnectorRegistry" class="ru.entaxy.esb.system.profile.commons.ConnectorRegistry" activation="eager"/>
|
||
|
||
<reference-list id="inConnector" interface="ru.entaxy.esb.system.profile.commons.connectors.in.InConnector"
|
||
filter="(endpointName=example)" availability="optional">
|
||
<reference-listener ref="inConnectorRegistry"
|
||
bind-method="register" unbind-method="unregister"/>
|
||
</reference-list>
|
||
----
|
||
|
||
И отправлять сообщения с помощью:
|
||
[source,xml]
|
||
----
|
||
<bean ref="inConnectorRegistry" method="send"/>
|
||
----
|
||
|
||
== Создание шаблона выходного коннектора(out-connector)
|
||
|
||
_Выходной коннектор_ - это коннектор, который отправляет сообщения из Entaxy в систему (вне Entaxy).
|
||
|
||
_Шаблон выходного коннектора_ - ftl файл, на основе которого шина будет создавать индивидуальные выходные коннекторы для каждой системы, с помощью подстановки параметров, полученных от пользователя.
|
||
|
||
Пример созданного шаблона, где название endpoint - _example_:
|
||
_src/main/resource/template/example-out-connector.ftl_
|
||
[source,xml]
|
||
----
|
||
<?xml version="1.0" encoding="UTF-8"?>
|
||
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
|
||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||
xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">
|
||
|
||
<reference id="pooledConnectionFactory" interface="javax.jms.ConnectionFactory"/>
|
||
<bean id="jms" class="org.apache.camel.component.jms.JmsComponent">
|
||
<property name="connectionFactory" ref="pooledConnectionFactory"/>
|
||
</bean>
|
||
|
||
<bean id="exampleConnector" class="ru.entaxy.esb.system.profile.commons.connectors.out.DirectVMOutConnectorImpl">
|
||
<property name="endpointName" value="example"/>
|
||
<property name="systemName" value="[=systemName]"/>
|
||
</bean>
|
||
<service ref="exampleConnector" auto-export="interfaces">
|
||
<service-properties>
|
||
<entry key="endpointName" value="example"/>
|
||
<entry key="systemName" value="[=systemName]"/>
|
||
</service-properties>
|
||
</service>
|
||
|
||
<camelContext id="example-out-connector-[=systemName]-context" xmlns="http://camel.apache.org/schema/blueprint"
|
||
errorHandlerRef="commonErrorHandler">
|
||
|
||
<errorHandler id="commonErrorHandler" redeliveryPolicyRef="noRedelivery"
|
||
type="DeadLetterChannel" deadLetterUri="direct-vm:commonErrorEndpoint"/>
|
||
<redeliveryPolicyProfile id="noRedelivery" disableRedelivery="true"/>
|
||
|
||
<route id="example-out-connector">
|
||
<from uri="direct-vm:example-out-connector-[=systemName]"/>
|
||
<log message="Message ${headers} send to system" loggingLevel="TRACE"/>
|
||
<toD uri="jms:queue:example-[=systemName]?exchangePattern=InOnly&priority=${headers.SOAPJMS_HEADER_priority}"/>
|
||
</route>
|
||
</camelContext>
|
||
|
||
</blueprint>
|
||
----
|
||
|
||
Создание и публикация бина: для связи коннектора с профилем, возможности получить весь список коннекторов определенного типа.
|
||
[source, xml]
|
||
----
|
||
<bean id="exampleOutConnector" class="ru.entaxy.esb.system.profile.commons.connectors.out.DirectVMOutConnectorImpl">
|
||
<property name="endpointName" value="example"/>
|
||
<property name="systemName" value="[=systemName]"/>
|
||
</bean>
|
||
<service ref="exampleOutConnector" auto-export="interfaces">
|
||
<service-properties>
|
||
<entry key="endpointName" value="example"/>
|
||
<entry key="systemName" value="[=systemName]"/>
|
||
</service-properties>
|
||
</service>
|
||
----
|
||
|
||
Маршрут выходного коннектора *должен* стартовать с:
|
||
[source,xml]
|
||
----
|
||
<from uri="direct-vm:example-out-connector-[=systemName]"/>
|
||
----
|
||
|
||
== Публикация созданных шаблонов
|
||
|
||
Необходимо опубликовать osgi сервис с информацией об созданных шаблонах для того, чтобы механизм создания коннекторов увидел их.
|
||
|
||
_src/main/resource/OSGI-INF/blueprint/camel-context.xml_
|
||
[source,xml]
|
||
----
|
||
<?xml version="1.0" encoding="UTF-8"?>
|
||
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
|
||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||
xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">
|
||
|
||
<!--template in connector-->
|
||
<bean id="inTemplate" class="ru.entaxy.esb.system.core.template.TemplateImpl">
|
||
<property name="bundleContext" ref="blueprintBundleContext"/>
|
||
<property name="templateName" value="example-in-connector"/>
|
||
<property name="params">
|
||
<map>
|
||
<entry key="param" value="false"/>
|
||
</map>
|
||
</property>
|
||
</bean>
|
||
<service interface="ru.entaxy.esb.system.core.template.Template" ref="inTemplate"/>
|
||
|
||
<!--template out connector-->
|
||
<bean id="outTemplate" class="ru.entaxy.esb.system.core.template.TemplateImpl">
|
||
<property name="bundleContext" ref="blueprintBundleContext"/>
|
||
<property name="templateName" value="example-out-connector"/>
|
||
<property name="params">
|
||
<map>
|
||
<entry key="param" value="false"/>
|
||
</map>
|
||
</property>
|
||
</bean>
|
||
<service interface="ru.entaxy.esb.system.core.template.Template" ref="outTemplate"/>
|
||
</blueprint>
|
||
----
|
||
|
||
xref:../core/system-managment/Users-manual-System-management.adoc[Информация о создании коннекторов со стороны пользователя]
|