[ 
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)

Reply via email to