Skip to content


Atom feeds for enterprise application messaging

In the last months I have studied and worked a lot with web services in general, and more specifically the RESTful ones. I believe we are going through a fast maturation process in this area, and RESTful web services are becoming the preferred choice for many new implementations. Right in the thick of things in this field is the Atom Publishing Protocol. This is the blueprint solution for RESTful web services, and its adoption is growing fast, reaching much broader scope than just blog applications using the Atom Format.The Atom format and AtomPub protocol can both be used for many interesting purposes. This year I’m working on a big refactoring (actually a new implementation) of a widely used Globo.com application. This application (let’s call it Register) is responsible for the creation of new users and provisioning new services to them, among other features.

A nice concept present in the original development is the use of Application Connectors. Through these connectors, other applications get notified of events that happened in the Register application. An example is: when a new subscriber (a paying user) is created, a connector sends the notification to another application in order to create the subscriber’s mailbox in the company’s external mail provider. Another example is: when a user gets provisioned in the blogging service, another connector sends a notification to the blogger application, that does what it needs in order to create the user’s directory and quota on the file server.

Although i like this concept, it currently has some problems. This connector’s invocation is done explicitly by the Register application. The Register application knows that a new subscriber must receive a new mailbox, and it needs to call a given connector to do this. This is my biggest concern with the current implementation. I strongly believe that an application that creates users must not know anything about mailboxes. In the current structure, when a new application ABC must be notified of events in application XYZ, application XYZ must be modified to invoke a new connector. This doesn’t please me at all. Let me explain a solution that pleases me more ;)

To explain my idea, I’ll propose some examples involving Google and its services. As we all know, Google offers several different services, all of which can be accessed using the same Google account. When you register at Google, you receive a mail account. Let’s suppose that Google Register application sends a new entry to an Atom feed every time a new user is created. This way, every user creation is present on the Atom Feed. If an application (for example Google Mail) needs to be notified of the creation of new users, it just needs to subscribe to the Register’s Atom feed.

Let me propose a richer example now. Let’s say Google starts to offer some super cool software development services. If you’re a developer, you can ask them to give you a “development account”. This development account would give you access to a Subversion repository, a Bugzilla project and a MySql database. Each of these would be an independent service offered by them, subject to change at any given time. The activation of “development accounts” could also populate an Atom feed.

This way the Subversion, Bugzilla and MySql services could be subscribers of the feed, doing everything they need when a new development account is activated, in asynchronous manner. The application that activates the development account has no knowledge of any other services. If Google wants to offer new services such as a Maven repository or a Continuous Integration environment, no problem. The new services would just subscribe to the Atom feed and do whatever they need when a new account is activated.

If Google wants to offer a free development account and a non-free account with better features, there could be another Atom feed for the activation of the paying accounts or maybe updates to the same existing feed. The Register application would know only about registrations, and other components could be easily plugged and unplugged from this process, without modifications on the Register application. Ah, and worth mentioning… totally decoupled from any specific platform. I don’t know how to implement any kind of messaging more decoupled than that.

This is much much better than the way our Register application sends notifications currently. And I’ll be pretty happy once we manage to do this, it’ll be so cool!

By the way, these Google’s software development services would be awesome. My friend Bairos kindly provides me Subversion and Trac services, but he doesn’t have Google’s bandwidth :) Let’s hope Google gets to know about this and starts offering these services. It’d be amazing!

Posted in open source.

Tagged with , , , , , , , , , , , , , .


0 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.



Some HTML is OK

or, reply to this post via trackback.



  • vitamin c online
  • pharmacies open 24 hours
  • products diet
  • new antibiotic drug
  • blood pressure information
  • arm muscle pain
  • maxalt dosage
  • natural acne products
  • viagra buy viagra
  • vitamin b-12
  • osteoporosis medicines
  • birth control options
  • viagra cialis levitra
  • calcium carbonate powder
  • care of cat
  • buy cheap cialis without a prescription
  • gout medicines
  • cytotec tablets
  • herbal breast enhancers
  • malaria africa drug
  • viagra cheap buy online
  • herpes drug
  • no prescription propecia
  • buy now viagra
  • simple remedy obesity
  • chronic snoring
  • generic compazine
  • neck pain relief
  • cheap generic medication wal-mart
  • body detox
  • edema treatment
  • knee arthritis
  • how viagra woirks
  • natural arthritis cure
  • new cholesterol guidelines
  • male enhancers
  • overdose klonopin
  • claritin pill
  • how to treat your pets
  • buy online viagra viagra
  • dog ear problem
  • taking zoloft
  • rhinocort spray
  • meds to stop smoking
  • natural muscle and joint health
  • help for psoriasis
  • neck pain relief
  • viagra fedex
  • ultram ordering
  • viagra young
  • side effects of antibiotics
  • cialis free samples
  • breast enhancements pills
  • menopause hair loss
  • cholesterol cures
  • chronic pain management
  • chronic pain
  • dog skin care
  • nolvadex buy
  • drugs fda
  • erectile dysfunction cure
  • order topamax online
  • citalopram withdrawal
  • back pain pills
  • skin disorders in dogs
  • current flu virus
  • free topamax
  • steps to help prevent flu
  • generic drugs
  • blood pressure drug names
  • buy cheap cialis
  • discount online pharmacy
  • male health problems
  • ear infections remedy
  • control premature ejaculation
  • discount pet products
  • scabies treatments
  • vascular edema
  • buy 10 mg cialis
  • pharmacy for pain medications
  • treatment of the flu
  • zantac dosage
  • boost immune system against virus
  • medications for nausea
  • women insomnia
  • buy medication on line
  • nausea vomiting
  • herpes medications to buy
  • high systolic blood pressure
  • treatment of insomnia
  • ramipril capsules
  • asthma and allergies
  • levitra best price
  • fluconazole
  • how to relieve ear pain
  • side effects soma
  • lasix on line without a prescription
  • canadian carisoprodol
  • getting off pain pills
  • ativan canada
  • how to get prescribed pain killers
  • side effects of amoxicillin
  • anti smoking drugs
  • about sleep aid
  • sleeping problems uk
  • tamiflu orders
  • cipro 250
  • latest cure for aids
  • order finasteride
  • weight loss sites
  • cat's health
  • order folic acid online
  • synthroid cost
  • levitra doses
  • top acne products
  • pet medicine
  • drugs that treat high blood pressure
  • celebrex buy online
  • diet medication
  • cholesterol drug
  • antibiotics dental
  • stress relief pills
  • coumadin medication
  • propecia without prescription
  • where can i order phentermine online
  • dark spot on skin
  • phentermine online
  • diabetes meds
  • pill zocor
  • natural lower blood pressure
  • mail order pain medications
  • xanax by mail
  • generic cialis
  • healthy weight loss supplements
  • discount drug prescription
  • soma price
  • buspirone dosage
  • rheumatoid arthritis and pregnancy
  • helping high blood pressure
  • cheap online pharmacy tramadol
  • cheap birth control online
  • herbal diet pills
  • viagra price online
  • viagra online no prescription
  • alzheimers drugs
  • male health drugs
  • canada cialis online
  • cholesterol meds
  • antidepressant medicine
  • prostate cancer treatment canada
  • symptoms of heart failure
  • buy xanax online buy
  • bayer's impotence
  • buying cialis online
  • nexium health
  • buy cod soma
  • international online pharmacies
  • protonix generic
  • cholesterol pills
  • treat arthritis
  • zyban canada
  • dog health help
  • healthy dog puppy food
  • drugs for type 2 diabetes
  • buy topamax
  • free treatment for pets
  • cheap soft viagra
  • how to increase breast size tips
  • pregnancy high blood pressure
  • paxil for anxiety
  • drugs high blood pressure
  • health problems in dogs
  • healthy pet treat
  • levitra web sites
  • viagra superactive
  • calcium osteoporosis
  • big muscles
  • meclizine medication
  • cure for irritable bowel syndrome
  • i want to give up smoking
  • prescription weight loss diet pill
  • treatment of congestive heart failure
  • buy cialis delived next day
  • dosage for amoxicillin
  • muscle building tips
  • carisoprodol
  • viagra free sample
  • prescribed diabetes medications
  • high calcium in the blood
  • skin disorders site australia
  • drug sarafem
  • on-line pharmacies
  • arthritis of the back
  • women insomnia
  • generic for ativan
  • high cholesterol
  • medical weight loss
  • buy body building prescription
  • pet drug store
  • way to improve skin