Configuring FME Flow as a JMS Client

FME Flow’s notification system comes equipped with both a JMS publisher and a JMS subscriber. The JMS publisher consumes messages from a message broker and publishes them to an FME Flow topic. The JMS subscriber does the opposite; it subscribes to an FME Flow topic, and provides messages to a message broker.

Note  Sample configurations for different message brokers are provided following these instructions.

Provide Access to the JMS Libraries

Note  Skip this section if using JMS with Apache ActiveMQ. the JMS libraries for Apache ActiveMQ are bundled with FME Flow, and so java classpaths need not be modified.

To ensure the publisher and subscriber both have access to the required JMS libraries, there are two options:

  • Option 1 (preferred): Place the JMS library files in the <FMEFlowDir>\Server\lib\jms folder.
    1. Locate the JMS client libraries for the JMS Client you wish to configure (see Installing the JMS Libraries).
    2. Copy the JMS client libraries to <FMEFlowDir>\Server\lib\jms.
    3. Restart FME Flow.
  • Option 2: Add access to the libraries in the java classpaths.
    1. In a text editor, open processMonitorConfigCore.txt.
    2. Scroll to the section on launching the JMS publisher, with the heading Start FME Flow Publisher Plugin (jms).
    3. Identify the classpath variable, FMESERVER_CLASSPATH.
    4. Append the path containing the vendor-specific JMS library (see Installing the JMS Libraries). Ensure that /* appears at the end of each path, so all libraries within the path are picked up. For example:

    ... -FMESERVER_CLASSPATH “...;C:/Program Files (x86)/IBM/WebSphere MQ/java/lib/*” ...

    1. Repeats steps 2 to 4 for the JMS subscriber, with the heading Start FME Flow Subscriber Plugin (jms).

    2. Save the file, and restart FME Flow.
    3. Note  If the classpath variable is incorrectly specified, the following messages (or their variants) may appear in the FME Flow Process Monitor log file:

      "Exception in thread “main” java.lang.NoClassDefFoundError: javax/jms/JMSException"

      "Failed to initialize JMS object named “xxx”, because of missing class “yyy”. Please ensure that the JMS client libraries are available for your JMS provider."

      For more information, see Testing and Troubleshooting.

After restarting FME Flow, proceed with adding the JMS Trigger and/or External Action (preferred) or JMS publisher and/or subscriber:

What's Next?

It is important to test the system after configuration. For more information, see Testing and Troubleshooting.