I'm implementing a simple integration solution and wondering about the best design.
Solution reads from JMS queue queue-A and writes to queue-B. In between the message goes through two transformations: first from queue-A format to standardized format, then from standardized format to queue-B format. To enable easy changing of queue-A format and queue-B format, I'm implementing this as 3 OSGi bundles: 1. main bundle - reads from queue-A - writes to transformation1-in - reads from transformation1-out - writes to transformation2-in - reads from transformation2-out - writes to queue-B 2. transformation1 - reads from transformation1-in - does transformation from queue-A format to standardized - writes to transformation1-out 3. transformation2 - reads from transformation2-in - does transformation from standardized formation to queue-B format - writes to transformation2-out There's JMS queues (for example) between each step to make processing reliable, so that if servicemix/camel crashes while doing transformation1 for example, message does not get lost. - I believe this could be implemented as camel-only solution - each bundle is a separate camel route and does not involve other servicemix components (such as NMR) at all - I guess other option would be to involve servicemix NMR (how would I do it with these 3 bundles?) - would this have some benefits over camel-only solution? Would it simplify implementing reliability, for example (would I still need to use explicitly each intermediate queue, eg. transformation1-out)?
