Introducing the SMQP Protocol

Simple Message Queue Protocol (SMQP) is a publish/subscribe specification that is currently being reviewed by the IETF since September of 2001. Several revisions of the protocol have also been submitted based on people’s comments, and recommendations. This article is to further introduce readers/developers to the protocol and encourage additional input to the specification.Introduction
SMQP is an Internet specification that defines the interaction between a
client and a server application. SMQP defines the communication protocol over a
TCP/IP network connection. SMQP is a text based protocol that is human readable,
though only a software developer would ever see the text protocol in an
implementation. The SMQP specification defines how messages can be passed from a
client, to a server much like how e-mail is passed from an e-mail client and a
e-mail server. The message would then be passed to client’s interest in that
kind of message from the server. Like e-mail, SMQP messages are routed to a
destination client. However, the similarities end there. SMQP is not an e-mail
protocol like SMTP and POP3, but it could be used as one. Like Instant Message
and Chat applications, users who have joined a common “room” can
exchange text. SMQP is not an IM protocol, though it could be used as one. SMQP
is metaphorically similar to these well know Internet applications, but more
extensible and flexible then these protocols. These protocols solved a specific
problem. SMQP solves a more universal problem one of moving messages between
distributed end-points that may not have direct knowledge or connection between

So why another protocol if so many protocols already exist to
perform the tasks that most users are already doing? SMQP was primarily
developed to define an open publish and subscribe protocol that was easy to use,
easy to understand, and extensible. However, in the development of the protocol
and testing it through various use case scenarios and practical implementation,
it became quickly obvious that this one protocol is more than suitable to
perform the same functions as these other protocols, and in some cases better. A
single protocol and implementations of that protocol could replace the
complexity and redundancy of many other well-known protocols that were designed
to solve a single problem. Many of these protocols are like Message Oriented
Middleware (MOM), but are not at the enterprise and abstract level as SMQP. It
is unlikely that these protocols will evolve to a generic MOM specification,
since they are so well established. But since SMQP was introduced in 2001, and
has learned from these other, older protocols, and may be better situated to
become a leading specification for network exchange of information. The author
makes no assertions that this will take place, but once the reader understands
the flexibility of SMQP, they may arrive to the same conclusion.

SMQP uses a centralized distribution architecture where a SMQP
server acts as a message broker for lightweight SMQP compliant client
applications. One server with direct connections to clients defines a single
cluster. Clients within a single cluster may publish messages to any topics
within that cluster, which would then be routed to any subscribers subscribed in
that cluster. The SMQP protocol also supports multi-cluster configuration where
servers can exchange messages with other servers. This allows a fairly limitless
expansions and configuration of the SMQP servers.

The specification (revision 10) has all the details about
SMQP, but the highlights of the SMQP specification includes:

  • Centralized, node based distribution
  • Publish/Subscribe messaging
  • Multiple login instances of a single account
  • Point-to-point messaging
  • Topic and/or content based subscription
  • Message pushing
  • Message reply, replace, receipt and recall
  • Topic searches, redirects, and access control
  • Various notification mechanisms
  • Transactional, guaranteed delivery of messages
  • Store and Forward of messages (guaranteed and un-guaranteed
  • Text based protocol
  • Extensible multi-part, message body with individual
    encoding and encryption of data
    Extensible authentication methods

Applications of SMQP
This section lists some real world examples in how MOM systems can be used
and how using SMQP would be a benefit for various implementations. This list is
by no means to be exhaustive but provided to stimulate some imaginative
solutions to real world problems. There are various solutions available to solve
many, if not all, of these types of problems. Why would any company invest in
the effort to migrate an existing system to the SMQP architecture and protocol?
If an existing system works and it is not broken, then do not touch it. However,
if an existing system needs to be expanded, replaced, upgraded, or a new
applications needs to be developed and might need to interoperate with other
systems, then a SMQP solution may be correct for you.

  • News and information
  • List Forums
  • Weather
  • System Engineering Alerts
  • Batch Farms
  • Order Fulfillment
  • Workflow management
  • Customer Relationship Management
  • Billing Systems
  • Stock Quotes
  • Stock Purchases
  • Email, IM, Paging, Text Messaging
  • Presence of Service
  • Data Exchange, file sharing

More Information
More information about the protocol can be found at
and at the IETF web site at
Constructive comments can be directed to [email protected].

About the Author
John Tegen is the author of SMQP. He has over 17 years of software
development in the areas of distributing/grid computing, application
development, and user interaction design. He has an undergraduate degree in
Aerospace Engineering from the University of Maryland, is nearly complete with
his MBA degree in technology management, and a long time member of ACM/SIGCHI.
Mr. Tegen was highly engaged in the BeOS community since 1994 and is proprietor
of OmicronSoft. He is currently Vice President of Software Engineering at Stone
Analytics in San Diego, California.

Copyright © 2002-2003. John Tegen


  1. 2003-04-18 2:15 am
  2. 2003-04-18 2:18 am
  3. 2003-04-18 2:27 am
  4. 2003-04-18 4:31 am
  5. 2003-04-18 9:56 am
  6. 2003-04-18 12:34 pm
  7. 2003-04-18 2:23 pm
  8. 2003-04-18 3:07 pm
  9. 2003-04-18 3:51 pm
  10. 2003-04-18 4:09 pm
  11. 2003-04-18 4:13 pm
  12. 2003-04-18 4:19 pm
  13. 2003-04-18 4:33 pm
  14. 2003-04-18 4:36 pm
  15. 2003-04-18 6:20 pm
  16. 2003-04-18 6:24 pm
  17. 2003-04-18 6:31 pm
  18. 2003-04-18 6:38 pm
  19. 2003-04-18 6:45 pm
  20. 2003-04-18 7:10 pm
  21. 2003-04-19 6:43 pm