The notion of guaranteed delivery of Java Message Service messages has been
lightly touched on in other recently published articles on JMS. But what
really makes a JMS message "guaranteed"? Should you just take it on faith, or
would you like to know what's behind it?
This article answers these questions via a detailed discussion of message
persistence, internal acknowledgment rules, and message redelivery. Using
excerpts condensed from the book we coauthored, Java Message Service, we'll
explain how JMS guaranteed messaging works - including once-and-only-once
delivery semantics, durable subscriptions, failure and recovery scenarios,
and transacted messages.
JMS Guaranteed Messaging
There are three key parts to guaranteed messaging: message autonomy,
store-and-forward, and the underlying message acknowledgment semantics.
Before we discuss these parts, we need to revi... (more)
Since releasing my latest book, Enterprise Service Bus (O'Reilly Media,
2004), I have been doing a fair amount of visiting corporations, conducting
seminars, and generally discussing with enterprise architects the subject of
enterprise service-oriented architecture (SOA) and how an enterprise service
bus (ESB) backbone can be leveraged to provide a framework for an enterprise
SOA. Along the way, I have been asked many questions about the nature of an
ESB. I have also fended off some misconceptions that have been growing in the
general IT population regarding what an ESB is and wh... (more)
Web services have given newfound importance to service-oriented architectures
and promise to drive down the cost of integration by providing a
standards-based approach to interoperability between applications. The
trouble is, what people really want is a new way of doing integration. Until
now, we haven't really had a way to incorporate Web services into a
meaningful architecture for integrating applications and services into a
fabric that spans the extended enterprise in a large-scale fashion. With the
advent of the enterprise service bus we have that architecture.
The Java Bus... (more)
The Java Message Service (JMS) is a specification put forth by Sun to define
a common set of APIs and common semantics for messaging-oriented middleware
providers. An increasing number of MOM vendors have embraced this
specification, and new vendors are building messaging products suitable for
doing business-to-business communication across the Internet.
The result is a landscape where developers can feel comfortable about writing
an application using a standard set of APIs while still having an ample
selection of JMS-compliant vendors to choose from. However, the JMS
Every software system has logging requirements so application processing can
be monitored and tracked. Modern distributed systems, which are usually based
on application frameworks, require a logging solution that can cope with
multiple processes on multiple hosts sending logging information to a single
Many application frameworks widely used today, whether they're high-level
frameworks like J2EE application servers or low-level frameworks like CORBA
ORBs, don't provide a distributed logging facility for application code.
Using JMS queues to log application mess... (more)