Qpid JMS event publisher is used to publish events in m ap, XML, JSON, and text formats via JMS transport.
Prerequisites
Follow the steps below to set up the prerequisites before starting the configuration.
Install Qpid JMS Broker and Qpid JMS Client.
- Add the following Qpid JMS-specific JAR files to
<PRODUCT_HOME>/repository/components/lib/
directory.< ACTIVEMQ_HOME>/lib/geronimo-jms_1.1_spec-1.0.jar
<QPID-CLIENT_HOME>/lib/ qpid-client-xxx.jar
<QPID-CLIENT_HOME>/lib/ qpid-common-xxx.jar
Register a connection factory in the
<PRODUCT_HOME>/repository/conf/jndi.properties
. For example, if the connection factory JNDI name isTopicConnectionFactory
, it will point the default Qpid host to localhost and port to 5672 as shown below. Furthermore, add the topics to be sent to the Qpid broker in the format: topic.{topicName} = {topicName}connectionfactory.TopicConnectionFactory=amqp://admin:admin@clientid/default?brokerlist='tcp://localhost:5672' topic.topicMap = topicMap topic.topicJSON = topicJSON
Start Qpid Broker, and then start the product.
Creating a Qpid JMS event publisher
For instructions on creating a Qpid JMS event publisher, see Publishing Events .
Configuring adapter properties
Specify the Static and Dynamic Adapter Properties, when creating a Qpid JMS event publisher using the management console as shown below.
After entering the above adapter properties, select the Message Format which you want to apply on the published events . Also, click Advanced to define custom output mappings based on the Message Format you selected. For more information on custom output mapping types, see Publishing Events in Various Event Formats .
You can also d efine the respective adapter properties of the event publisher based on the transport type within the <to>
element of the event publisher configuration in the <PRODUCT_HOME>/repository/deployment/server/eventpublishers/
directory as follows.
<eventPublisher name="QpidJMSOutputEventAdapter" statistics="disable" trace="disable" xmlns="http://wso2.org/carbon/eventpublisher"> .................. <to eventAdapterType="jms"> <property name="java.naming.factory.initial">org.apache.qpid.jndi.PropertiesFileInitialContextFactory</property> <property name="java.naming.provider.url">repository/conf/jndi.properties</property> <property name="transport.jms.UserName">jms-user</property> <property encrypted="true" name="transport.jms.Password">JP4yDiEh6HogOEjJzQQwHaJFIWZlnJTzaERl4eYrwukNeypm36R+odMkaN9b2q4H9jBQsRV+mhcT1wQVnBpEZn4a+SuFuLKh3NihDEgww6R1tZVo8p1D6TUKvSHXYEpwSOgKrkOmdaFEOQOjfdhfK3Hrnjkz/MYPYQknrLK5MIY=</property> <property name="transport.jms.DestinationType">topic</property> <property name="transport.jms.Header">header_name1:header_value1,header_name2:header_value2</property> <property name="transport.jms.Destination">test_topic</property> <property name="transport.jms.ConnectionFactoryJNDIName">TopicConnectionFactory</property> </to> </eventPublisher>
The above adapter properties are described below.
Static adapter properties
Adapter Property | Description | Configuration file property | Example |
---|---|---|---|
JNDI Initial Context Factory Class | The JNDI initial context factory class. The class must implement the java.naming.spi.InitialContextFactory interface | java.naming.factory.initial | org.apache.qpid.jndi.PropertiesFileInitialContextFactory |
JNDI Provider URL | URL of the JNDI provider | java.naming.provider.url | repository/conf/jndi.properties |
Username | Valid username for the JMS connection | transport.jms.UserName | jms-user |
Password | Valid password for the JMS connection | transport.jms.Password | jms-password |
Connection Factory JNDI Name | The JNDI name of the connection factory | transport.jms.ConnectionFactoryJNDIName | TopicConnectionFactory |
Destination Type | The sort order for messages that arrive on a specific destination | transport.jms.DestinationType | topic/queue |
Destination | The topic or queue to which WSO2 CEP/DAS sends messages by publishing. | transport.jms.Destination | test_topic |
Dynamic adapter properties
Adapter Property | Description | Configuration file property | Example |
---|---|---|---|
Header | Define transport headers as a valid header name in a header value pair format | transport.jms.Header | header_name1:header_value1,header_name2:header_value2 |