My take on this is to log things into ZeroMQ (via Message::Passing), and route
them to Message::Passing::Output::WebHooks - the code for that output might not
be as bullet proof as you’re looking for, but it should be a reasonable
starting place.
I’d probably go right ahead and implement the timeout in that output for a
first take - you’d lose anything which was waiting in a retry interval as and
when you restarted the hook server, but that would presumably be very
infrequently, and if you had _lots_ of timeouts, it could use a lot of RAM..
But depending upon that scale / relaibility you actually need both of these
things might be just fine.
Cheers
Tom
On Jan 15, 2014, at 7:28 PM, Bill Moseley wrote:
> I'm running Catalyst under mod_perl2 (currently, subject to change). Some
> requests trigger a callback to a user-provided URL -- a webhook.
>
> Obviously, it's best to do those asynchronously and not in-process. Don't
> want a web request (or really an Apache process) hanging while waiting on an
> external web server to respond.
>
> A queue is probably the best approach, but there's also some advantage of
> having the Catalyst app make the webhook request -- specifically because the
> Catalyst app has the context of the request and has application logging
> available.
>
> How would you implement this?
>
>
> How would that change if you wanted more than just "fire-and-forget"? For
> example, if you wanted to provide some kind of retry interval for failed
> callbacks. The external server might be temporarily down for maintenance.
>
>
> Thanks,
>
>
> --
> Bill Moseley
> mose...@hank.org
> ___
> List: Catalyst@lists.scsys.co.uk
> Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
> Searchable archive: http://www.mail-archive.com/catalyst@lists.scsys.co.uk/
> Dev site: http://dev.catalyst.perl.org/
___
List: Catalyst@lists.scsys.co.uk
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/catalyst@lists.scsys.co.uk/
Dev site: http://dev.catalyst.perl.org/