You can add a component by configuring it in the FUSE Mediation Router Spring
configuration file, META-INF/spring/camel-context.xml. To find the component,
the component's URI prefix is matched against the ID attribute of a bean
element in the Spring configuration. If the component prefix matches a bean element ID,
FUSE Mediation Router instantiates the referenced class and injects the properties specified in the
Spring configuration.
![]() | Note |
|---|---|
This mechanism has priority over auto-discovery. If the CamelContext finds a Spring bean with the requisite ID, it will not attempt to find the component using auto-discovery. |
If there are any properties that you want to inject into your component class, define them as bean properties. For example:
public classCustomComponentextends DefaultComponent<CustomExchange> { ...PropTypegetProperty() { ... } void setProperty(PropTypev) { ... } }
The get method and
the Property()set method access the
value of Property()property.
To configure a component in Spring, edit the configuration file,
META-INF/spring/camel-context.xml, as shown in Example 4.1.
Example 4.1. Configuring a Component in Spring
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://activemq.apache.org/camel/schema/spring http://activemq.apache.org/camel/schema/spring/camel-spring.xsd">
<camelContext id="camel" xmlns="http://activemq.apache.org/camel/schema/spring">
<package>RouteBuilderPackage</package>
</camelContext>
<bean id="component-prefix" class="component-class-name">
<property name="property" value="propertyValue"/>
</bean>
</beans>The bean element with ID
component-prefix configures the
component-class-name component. You can inject properties
into the component instance using property elements. For example, the
property element in the preceding example would inject the value,
propertyValue, into the property
property by calling set on
the component.Property()
Example 4.2 shows an example of how to configure
the FUSE Mediation Router's JMS component by defining a bean element with ID equal to jms.
These settings are added to the Spring configuration file, camel-context.xml.
Example 4.2. JMS Component Spring Configuration
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://activemq.apache.org/camel/schema/spring http://activemq.apache.org/camel/schema/spring/camel-spring.xsd">
<camelContext id="camel" xmlns="http://activemq.apache.org/camel/schema/spring">
<package>org.apache.camel.example.spring</package>
</camelContext>
<bean id="jms" class="org.apache.camel.component.jms.JmsComponent">
<property name="connectionFactory">
<bean class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL"
value="vm://localhost?broker.persistent=false&broker.useJmx=false"/>
</bean>
</property>
</bean>
</beans>The | |
The bean element with ID, | |
JMS is just a wrapper for a messaging service. You must specify the concrete
implementation of the messaging system by setting the | |
In this example, the concrete implementation of the JMS messaging service is
Apache ActiveMQ. The |