[
https://issues.apache.org/jira/browse/SLING-3292?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13852955#comment-13852955
]
Lars Trieloff commented on SLING-3292:
--------------------------------------
It looks like buffering is a common approach, for instance SendGrid buffers for
1 second or until the buffer reaches a size of 1 MB:
http://sendgrid.com/docs/API_Reference/Webhooks/event.html
I would prefer Sling Resource Events, as most of Sling's API operates on this
abstraction, but to my knowledge JCR is the most common resource provider
supporting observation.
> Web Hooks for Resource Observation
> ----------------------------------
>
> Key: SLING-3292
> URL: https://issues.apache.org/jira/browse/SLING-3292
> Project: Sling
> Issue Type: New Feature
> Components: Extensions
> Reporter: Lars Trieloff
> Priority: Minor
>
> I have an application that is storing resources for multiple other web
> applications and makes them available through the Sling REST API. Each of the
> consuming web applications has implemented their own caching and polling
> strategy for the resources made available by my Sling web application.
> In order to reduce latency when resources get updated in my Sling web
> application, and to reduce the need for polling resources on the side of my
> consuming web application, I would like to support Web Hooks
> (https://webhooks.pbworks.com/w/page/13385124/FrontPage - a pattern also
> supported by applications such as GitHub
> https://help.github.com/articles/post-receive-hooks or Evernote
> http://dev.evernote.com/doc/articles/polling_notification.php), so that
> client applications can register callbacks when one of the resources in my
> web application changes.
> The events to be observed should be:
> * resource added
> * resource moved
> * resource deleted
> * resource updated
> An observing application should be able to specify:
> * a pattern of resource paths it is interested in
> * a collection of resource types it is interested in
> * a collection of events it is interested in
> * a callback URL that should receive POST requests when a change matching the
> pattern above has been made
> The subsequent POST request should contain following information
> * timestamp of the change
> * URL of the changed resource
> * event type of the change
> * user initiating the change
> Furthermore, observing applications should be able to
> * create a new listener using a POST request
> * GET the list of listeners already registered
> * POST to update or delete an existing listener
> h5. Error Handling
> In case the registered callback URL is not available, Sling should retry the
> notification POST request, with increasing time between retries.
> After a maximum number of retries, the listener should be blacklisted, so
> that no further retries are being made
> h5. Configuration
> * maximum number of retries
> * enforce HTTPS (for production use)
> * authentication for outgoing requests
--
This message was sent by Atlassian JIRA
(v6.1.4#6159)