Since we're on a major migration process of this website, some component documents here are out of sync right now. In the meantime you may want to look at the early version of the new website
https://camel.apache.org/staging/
We would very much like to receive any feedback on the new site, please join the discussion on the Camel user mailing list.
Work in progress The page intends to collect all ideas and proposals around the idea of a Message Store as a architectural concept in Camel. No implementation has started yet. You can participate by sharing your input here or post it to the dev mailing list. For the initial brainstorming on the dev mailing list, please check this thread. From the Camel 3.0 ideas page(+1: hadrian, claus) SummaryIn Camel 2.x, a Message Store is not a "first class citizen" in the sense of a architectural concept, which can be applied consistently whereever needed. Side note: Spring Integration provides a corresponding concept. List of proposed featuresWork in progress Feel free to add, edit, comment.... At some time we probably need to assign priorities as to what is indispensable for Camel 3.0 and what could be delivered in a later patch release
Message Store DataIn order to disambiguate stored exchanges and make them retrievable again, message store entries must carry attributes in addition to the marshaled exchange.
Code examplesWork in progress Sometimes it is easier to express thoughts by providing a fictional piece of code along with some comments.... This section intends to demonstrate the usage of a Message Store by providing hypothetical code snippets, e.g. AggregatorExample.java ... from(...) .aggregate() .correlationExpression(header(id)) .aggregationStrategy(myStrategy) .completionTimeout(10000) .messageStore(myStore) ... Claim checkTHe claim check pattern temporarily reduces the data volume of the message by storing content in a message store in exchange for a claim check token. The content is retrieved later on before it's needed again. Claim Check EIP store // Optionally: override default store from context // (ohr:) IMHO I don't think that this configuration level is really necessary defaultMessageStore(myStore); // 1) Store body. // 2) Set body to null. // 3) Set Exchange.CLAIM_CHECK header to unique claim id. from(...) .checkIn() // store body in default store // .checkIn(header('bigHeader'), customStore) : store header in custom store .to(...); Claim Check EIP read // 1) Lookup for the Exchange.CLAIM_CHECK header value. // 2) Read the message. // 3) Set body to the value fetched from the store. from(...) // .setHeader(Exchange.CLAIM_CHECK, const("id")) : header should still contain the claim id .reclaim() // read body from default store // .reclaim().aggregationStrategy(myStrategy) : more generically using a aggregation strategy // .reclaim(customStore).aggregationStrategy(myStrategy) : reclaim from custom store using a aggregation strategy .to(...); Open issues:
|