How do I dynamically generate file name based on XML message body in a Camel route at runtime

Solution Unverified - Updated -

Issue

Background

I have a Camel route to route a message from an ActiveMQ queue to a file:

<route>
   <from uri="activemq:queue:DATA.OUT"/>
   <to uri="file:/opt/data/DATA.OUT"/>
</route>

There is a requirement to dynamically look up the value of two elements in an XML message and create a file name based on the value of those two elements. For example, the message might look like:

<?xml version='1.0' encoding='UTF-8'?>
<tst_msg>
    <product_header>
        <product_header_msg_id>
            <product_msg_id>9840</product_msg_id>
            <product_msg_name>Test Product</product_msg_name>
        </product_header_msg_id>
    </product_header>
     <packet_header>
         <packet_header_index>1</packet_header_index>
         <packet_header_msg_number>8491920</packet_header_msg_number>
         <packet_header_size>944</packet_header_size>
     </packet_header>
</tst_msg>

The resulting file name should be something like: tst-msg-file-8491920-9840-data.xml.

Environment

  • Fuse Mediation Router 2.8
  • Fuse Mediation Router 2.9

Subscriber exclusive content

A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.

Current Customers and Partners

Log in for full access

Log In

New to Red Hat?

Learn more about Red Hat subscriptions

Using a Red Hat product through a public cloud?

How to access this content