JBoss Fuse - AMQ พร้อมอูฐ
ในบทนี้เราจะเรียนรู้พื้นฐานของการทำงานของ ActiveMQ กับ Camel
การกำหนดค่าเป็น ActiveMQ Component
ก่อนที่เราจะสามารถใช้คิวหรือหัวข้อ ActiveMQ ในโค้ดของเราเราต้องกำหนดค่า ActiveMQComponent การกำหนดค่าขั้นต่ำของ ActiveMQComponent สามารถทำได้ดังแสดงในโปรแกรมต่อไปนี้ -
<bean id = "activemq" class = "org.apache.activemq.camel.component.ActiveMQComponent">
<property name = "brokerURL" value = "tcp://localhost:61616"/>
<property name = "userName" value = "admin"/>
<property name = "password" value = "admin"/>
</bean>
brokerURL - ระบุโฮสต์และพอร์ตสำหรับ AMQ Broker
username - ระบุชื่อผู้ใช้ที่จะใช้เชื่อมต่อกับ AMQ Broker
password - ระบุรหัสผ่านสำหรับเชื่อมต่อกับ AMQ Broker
กำลังเชื่อมต่อกับคิว
ตอนนี้เราได้กำหนดค่า ActiveMQComponent แล้วเราสามารถใช้มันใน CamelContext เป็นจุดสิ้นสุด
เราจะใช้จุดสิ้นสุด AMQ ในรูปแบบต่อไปนี้ -
Activemq:[queue|topic]:[queueName|topicName]
การเขียนข้อความถึง AMQ
<?xml version = "1.0" encoding="UTF-8"?>
<!-- Configures the Camel Context-->
<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.xsd
http://camel.apache.org/schema/spring
http://camel.apache.org/schema/spring/camel-spring.xsd">
หลังจากปรับใช้บันเดิลนี้ใน Fuse container คุณควรจะเห็นข้อความที่โพสต์ไปยัง AMQ ซึ่งวางเป็นไฟล์ในรูปแบบ D:/src/data.
Input
D: /src/data/input.txt
Test me
Output
อ่านจาก AMQ
<?xml version = "1.0" encoding = "UTF-8"?>
<!-- Configures the Camel Context-->
<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.xsd
http://camel.apache.org/schema/spring
http://camel.apache.org/schema/spring/camel-spring.xsd">
<camelContext xmlns = "http://camel.apache.org/schema/spring">
<!-- here is a sample which processes the input files
(leaving them in place - see the 'noop' flag)
then performs content based routing on the message using XPath -->
<route>
<from uri = "activemq:queue:TestQ"/>
<to uri = "file:///d:/src"/>
</route>
</camelContext>
<bean id = "activemq" class = "org.apache.activemq.camel.component.ActiveMQComponent">
<property name = "brokerURL" value = "tcp://localhost:61616"/>
<property name = "userName" value = "admin"/>
<property name = "password" value = "admin"/>
</bean>
</beans>
Input
หลังจากปรับใช้บันเดิลนี้คุณควรเห็นไฟล์ที่สร้างใน D: / src และมีการใช้งานข้อความ นอกจากนี้ควรแสดง Consumer สำหรับคิวนั้นด้วย
Output
D: / src
Test me
การเขียนหัวข้อ
<?xml version = "1.0" encoding = "UTF-8"?>
<!-- Configures the Camel Context-->
<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.xsd
http://camel.apache.org/schema/spring
http://camel.apache.org/schema/spring/camel-spring.xsd">
<camelContext xmlns = "http://camel.apache.org/schema/spring">
<!-- here is a sample which processes the input files
(leaving them in place - see the 'noop' flag)
then performs content based routing on the message using XPath -->
<route>
<from uri = "file:///d:/src"/>
<to uri = "activemq:topic:TestTopic” />
</route>
</camelContext>
<bean id = "activemq" class = "org.apache.activemq.camel.component.ActiveMQComponent">
<property name = "brokerURL" value = "tcp://localhost:61616"/>
<property name = "userName" value = "admin"/>
<property name = "password" value = "admin"/>
</bean>
</beans>
อ่านจากหัวข้อ
<?xml version = "1.0" encoding = "UTF-8"?>
<!-- Configures the Camel Context-->
<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.xsd
http://camel.apache.org/schema/spring
http://camel.apache.org/schema/spring/camel-spring.xsd">
<camelContext xmlns = "http://camel.apache.org/schema/spring">
<!-- here is a sample which processes the input files
(leaving them in place - see the 'noop' flag)
then performs content based routing on the message using XPath -->
<route>
<from uri = "activemq:topic:TestTopic"/>
<to uri = "file:///d:/src2"/>
</route>
</camelContext>
<bean id = "activemq" class = "org.apache.activemq.camel.component.ActiveMQComponent">
<property name = "brokerURL" value="tcp://localhost:61616"/>
<property name = "userName" value = "admin"/>
<property name = "password" value = "admin"/>
</bean>
</beans>
Input
D: /src/file1.xml
<order>
<data>
<value>value1</value>
</data>
</order>
<order>
<data>
<value>value2</value>
</data>
</order>
<order>
<data>
<value>value3</value>
</data>
</order>
Output
D: / src /
<order>
<data>
<value>value1</value>
</data>
</order>
<order>
<data>
<value>value2</value>
</data>
</order>
<order>
<data>
<value>value3</value>
</data>
</order>