<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">I just pushed the first alpha of a webhooks plugin for RabbitMQ to Github:<div><br></div><div><a href="http://github.com/jbrisbin/rabbitmq-webhooks">http://github.com/jbrisbin/rabbitmq-webhooks</a></div><div><br></div><div><a href="http://github.com/jbrisbin/rabbitmq-webhooks"></a>This plugin takes a message from a configurable queue and sends it to a REST URL using whatever method you tell it to (PUT|POST|DELETE|etc...).</div><div><br></div><div>I haven't yet added the throttling and "wait until" scheduling I plan to add. This will let you interact with Google AppEngine or any other cloud provider by exposing REST services to asynchronous messaging.</div><div><br></div><div>The problems I'm trying to solve are:</div><div><br></div><div>In Google AppEngine, for example, you don't know how many of your web applications will be running. Some might die off and others might be started at any time to handle the traffic load. If you start consumers within the context of your web application, you will get fewer or more consumers depending on the number of web application instances running in the cloud. This is not always a bad thing, but you don't have any control over that process and I'm a control freak. :)</div><div><br></div><div>I'd like to be able to have asynchronous "triggers" for CouchDB that do things automatically and when I want them to.</div><div><br></div><div>This also allows greater parallelism because, looking again at the cloud provider scenario, if I wanted to dump 10,000 requests on my cloud application, I could, because the cloud that powers my web application is designed to handle that kind of elastic load. I can't say the same for standard AMQP consumers. I would have to run them on something like EC2 and manually fire up instances to get greater parallelism. This could be pretty interesting for map/reduce jobs on Internet scale. :)</div><div><br></div><div>This plugin is pretty configurable already but will be more so as time goes on. Message headers get transferred to HTTP request headers automatically. The contentType message property becomes the Content-Type HTTP header. I will eventually let messages override everything on per-message basis: url, method, etc...</div><div><br></div><div>I built against a checkout of the server, but we're close enough to the 2.0 release that it should Just Work by dumping the .ez files into your 2.0 plugins directory. I'd love to know if this works in 1.8, too. I haven't even tried. I'm not really doing anything special, so I can't imagine it would be hard to make it backwards-compatible.</div><div><br></div><div>Let me know what you think!<br><div><span class="Apple-style-span" style="font-size: 14px; font-family: Times; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div><font class="Apple-style-span" face="Palatino" size="4"><span class="Apple-style-span" style="font-size: 14px; "><br></span></font></div><div><font class="Apple-style-span" face="Palatino" size="4"><span class="Apple-style-span" style="font-size: 14px; ">J. Brisbin</span></font></div><div><font class="Apple-style-span" face="Palatino" size="4"><span class="Apple-style-span" style="font-size: 14px; "><a href="http://jbrisbin.com/">http://jbrisbin.com/</a></span></font></div><div><font class="Apple-style-span" face="Palatino" size="4"><span class="Apple-style-span" style="font-size: 14px; "><br></span></font></div><div><font class="Apple-style-span" face="Palatino" size="4"><span class="Apple-style-span" style="font-size: 14px; "><br></span></font></div></div><font class="Apple-style-span" face="Palatino" size="4"><span class="Apple-style-span" style="font-size: 14px; "><br></span></font></div></span><br class="Apple-interchange-newline"></span><br class="Apple-interchange-newline">
</div>
<br></div></body></html>