Hello,

we are currently using a Transformer to redirect Event messages into a 
queue to consume them as kind of Unique Processing by distributed 
applications.
For this we use a transformer:

public class PrefixAddressTransformer implements Transformer 
{
   @Override
   public Message transform(Message message) 
   {
      SimpleString originalAddress =
 (SimpleString)message.getBrokerProperty(Message.HDR_ORIGINAL_ADDRESS);
      message.setAddress(message.getAddress() + "." 
+originalAddress.toString());
      return message;
   }
}

That we use with with a divert:

      <diverts>
         <divert name="test-events-divert">
              <address>test.events.#</address>
              <forwarding-address>TestQ</forwarding-address>
              <exclusive>true</exclusive>
 
<transformer-class-name>org.apache.activemq.artemis.core.server.transformer.PrefixAddressTransformer</transformer-class-name>
         </divert>
     </diverts>

So that all messages on test.events.# are also sent to a queue 
TestQ.test.events... and can be processed in a distributed manner.
Others might also profit from this, so we wanted to commit it to the 
offical artemis repo.

Should there be testing done on this transformer, like with the 
org.apache.activemq.artemis.core.server.transformer.AddHeadersTransformer,
which is tested in 
org.apache.activemq.artemis.tests.integration.management.DivertControlTest
?

best regards
Maximilian Rieder

Reply via email to