Archive

Posts Tagged ‘Java’

Something about AMQP

October 11, 2010 Leave a comment

Hello,

If you haven’t heard nothing about Enterprise Messaging i suggest you  read the related wikipedia’s article http://en.wikipedia.org/wiki/Enterprise_messaging_system. In this article I will introduce the Advanced Messaging Queuing Protocol and some of his concepts.

Before all why talking about AMQP?  Because is the first open standard for the Enterprise Messaging; in a enterprise environment the integration is necessary and an open solution is needed especially because this kind of solution should be leveraged from any language and platform; JMS doesn’t do it very well because of his java dependence and his terms of license: JMS-like interface cannot legally be provided for non-Java platforms.

Continuing talking about AMQP, it supports this kind of message distributions:

  • Store-and-forward with many writers and one reader
  • Transaction distribution with many writers and many readers
  • Publish-subscribe with many writers and many readers
  • Content-based routing with many writers and many readers
  • Queued file transfer with many writers and many readers
  • Point-to-point connection between two peers

This standard is thought to have small and modular model therefore his task is splitted in two main roles, Exchange and  Message queue. This choice made available three main features:

  • The ability to create arbitrary exchange and message queue types
  • The ability to wire exchanges and message queues together to create any required message-processing system
  • The ability to control this completely through the protocol.

A Message queue is a storage entity, it can store messages in memory or in disk  and must provide messages to consumers applications, is described by some proprierties:

  • private or shared
  • durable or transient
  • permanent or temporary

The standard does not define directly entities like  Store and Forward queue or Pub-Sub queue, these entities are created trough Message queue’s attribute.

The Exchange entity takes messages from Applications Messages Producer and routes them to the Message Queue according to criteria called “bindings”. Bindings are therefore the relationship between Exchanges and the and Messages queues.

These are the basic concepts you need to know about AMQP model, in the next post i’ll  introduce you to qpid, an apache’s software project that fully respect this standard and we’ll try it with some source code examples.

Follow

Get every new post delivered to your Inbox.