Hi James,

Very good and interesting use case. You could use BPM, indeed, but I think it's way to heavy weight for what you need to do. CEP would be another idea, but I digress.

Wire-tap won't help you, I believe Willem misunderstood your question.

So here's what I think: you have your system, it emits some events (messages) when things take place on behalf of a user. (I think in Camel 3 we'll have even more goodies to handle your scenario... and I digress again). So I assume your events are send via some protocol that Camel understand, something from tcp/ip (camel-mina or camel-netty would help), to maybe http, or a web service call (rest maybe?) or even a database. So you'd need a Camel endpoint to send your events to and start a Camel route. Using the dsl it's trivial, you probably saw tons of examples. If your events are actually api calls, it is a bit less straightforward, you may need to write a component (which is easy) and there are other options. I won't get into details unless you confirm that this is the case.

Once you have your endpoint, you need to setup a route to do your aggregation. The route and processing is easy to define using the dsl. Based on what you described your route would probably contain some aggregation [1], I assume you have some correlation ids there identifying both the user/account and the activity you're charing for. You may use other things depending on your logic, such as a filter, content based router, who knows. If you are not familiar with the EIPs [2] it's worth taking a quick look. At the end of the route, once you're done with the processing you'll need to send your result to the billing service (also available at some url).

What's nice about your scenario is that it sounds non intrusive to your business logic, it's async, one way (in-only) so it would scale really well and should not create any headaches.

I hope this helps and I hope I did not misunderstand your request. Obviously more details you provide about your scenario, more concrete answers you're gonna get.

Cheers,
Hadrian


[1] http://camel.apache.org/aggregator2.html
[2] http://camel.apache.org/eip.html



On 04/25/2013 09:15 PM, Willem jiang wrote:
I'm not sure if the billing service needs the data from the business analysis.
If it doesn't need those data, it could be more easy by using wire-tap[1]

[1]http://camel.apache.org/wire-tap.html

--
Willem Jiang

Red Hat, Inc.
FuseSource is now part of Red Hat
Web: http://www.fusesource.com | http://www.redhat.com
Blog: http://willemjiang.blogspot.com (http://willemjiang.blogspot.com/) 
(English)
           http://jnn.iteye.com (http://jnn.javaeye.com/) (Chinese)
Twitter: willemjiang
Weibo: 姜宁willem





On Thursday, April 25, 2013 at 9:29 PM, James Green wrote:

This isn't to do with Camel per se but I'm hopeful I'm asking this question
of the the right audience!

Basically we're going to be routing event messages into some storage
component where some of those messages may be billable to customers.

We have an existing service that charges customers based on a high level
aggregate summary of activity. We are missing a component that takes these
new event messages, performs business analysis on them, then sends them
onwards into our existing billing service.

BPM sounds almost like the thing we want, but it's rather broad given our
somewhat narrow scope.

Can any Camel users advise on what they use to aggregate events for billing
purposes?

Thanks,

James


Reply via email to