Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

...

  • SEDA for in-JVM load balancing across a thread pool]
  • ActiveMQ or JMS for distributed load balancing and parallel processing
  • JPA for using the database as a poor mans message broker

...

  • for distributed locking, use a database by default, they are very good at it (smile)
  • to preserve ordering across a JMS queue consider using Exclusive Consumers in the ActiveMQ component
  • even better are Message Groups which allows you to preserve ordering across messages while still offering parallelisation via the JMSXGrouopID JMSXGroupID header to determine what can be parallelized
  • if you receive messages out of order you could use the Resequencer to put them back together again

...

For example the following code shows how to create a message group using an XPath expression taking an invoice's product code as the Correlation Identifier

Code Block

from("activemq:a").setHeader("JMSXGroupID"JmsConstants.JMS_X_GROUP_ID, xpath("/invoice/productCode")).to("activemq:b");

...