I have seen this kind of operation in place before - SMS providers for example for event driven stuff across the solution boundaries using basically a callback implementation
I would * expose an http interface to my solution. I think it would be RESTian for the usual reasons * I would use some message broking in the middle because it guarantees the sequence, deliver once, dont lose thing. ActiveMq seems pretty good - I am no expert though * For the feedback leg to the client you could ** ask them to register an optional http endpoint that you could signal ** let them come and get it from you - e.g. you expose an rss feed personalised to that client I think its a fairly standard way of exposing an inherently async service in a sync manner On 31 Mar 2011, at 14:41, James Talbut wrote: > Folks, > > Another question along similar lines to the System architecture thread. > > I need to provide an asynchronous web service that will accept calls > from a client, persist them somewhere, then asynchronously try to call > a corresponding web service implemented by a third party. > If the call succeeds my service should notify the client (via another > web service, probably most REST-like than SOAP-like). > If the call fails I should keep trying periodically for 24 hours. > > The two primary requirements are: > 1. The initial call from the client should be quick (so don't try > calling the third party straight away). > 2. It must be impossible to lose a message or send it to the third > party twice (hence it needs to persist the message somehow before > returning). > > I don't know ActiveMQ (but happy to learn) and the third party won't > provide anything more than a simple web service interface (so they > won't hook into an ActiveMQ that we implement). > * > I'd like to be able to reuse the infrastructure so providing the same > functionality across different web services is trivial. > i.e. I'd like the thing that picks up failed messages to work for any > web service (requiring nothing more than the spring definition). > > Is ActiveMQ the right tool for looking after persisting the messages > and making them available? > Should I just write my own component to persist (and recover) a > complete Camel Exchange? > Or is there something else out there that will do what I want? > > Any pointers gratefully received. > > Thanks > > Jim >