Welcome!

Weblogic Authors: Yeshim Deniz, Elizabeth White, Michael Meiner, Michael Bushong, Avi Rosenthal

Related Topics: Weblogic

Weblogic: Article

Distributing Tasks in a Clustered Application Using JMS

Much more than asynchronous data transfer

Distributing Tasks in a Clustered Application Using JMS Much more than asynchronous data transfer

Decoupling and delaying processing in a request-driven environment is one of the key strategies in creating a robust and scalable distributed application. Many services rely on clustering alone to ensure scalability, but they frequently run into trouble when newfound requirements keep application complexity growing.

Although server clustering is an essential technology that facilitates scalability, it can be rather inefficient when all processing is done synchronously. Throughput can be increased, but responsiveness is a tougher nut to crack.

In this article, I discuss asynchronous processing and illustrate how clever task management can increase the performance, availability, scalability, and manageability of your application. We will create a generic task distribution framework that can send any task to either one or every server in your cluster, in a highly configurable fashion. Our framework will implement the well-known Command pattern by using polymorphism and the Java Message Service (JMS).

What Does Decoupling Mean in Practice?
When a server receives a client request, it usually needs to perform several individual tasks before a response can be returned. Decoupling means that instead of performing all tasks at once, some are instead queued and processed asynchronously. Because queuing is normally a low-cost operation, the synchronous request will finish quicker.

And the Benefits?
Processing tasks sequentially and in parallel is generally more efficient than processing them randomly (whenever clients happen to make requests). The positive impact is greater than what is immediately apparent. In theory, decoupling can increase performance in the following areas:

  • Robustness: Increases because requests will rely on fewer processes that can fail
  • Responsiveness: Partial post processing of requests decreases the time between receiving a request and returning a response
  • Scalability: All decoupled processes can grow in complexity without the threat of decreased responsiveness
  • Availability: Failures can be handled without the client ever knowing that something went wrong

Automatic retries are easily configured for situations where subsystems are unavailable.

Naturally, the difference between theory and practice will vary from application to application. However, it is clear that almost every implementation will have at least some of the aforementioned benefits.

Sounds Great, But Are There Any Pitfalls?
As with most good things, there are some caveats. One of the most severe is that you might actually find yourself decreasing availability if you don't ensure that you have enough hardware to clear busy processing queues. Queues grow very rapidly if more asynchronous requests come in than your system is able to process. Care has to be taken in the design, and automated monitoring of queues is certainly advisable. Another obvious problem is that most processes in request-driven environments aren't very good candidates for decoupling. In fact, most of the processing might be required to return a response. Sometimes it will require some out-of-the-box thinking and maybe even a change in the way you serve your clients.

Which Processes Can We Decouple?
From a purely technical perspective, nearly all processes can be decoupled. For instance, you can decouple an ordering transaction by queuing a list of purchased items together with customer details - the asynchronous process will take care of the rest. The downside is that you can't include any processing details in the response. Thus, meticulous prevalidation of data is important to ensure that nothing will go wrong.

An increasingly popular implementation is to queue requests immediately and then keep polling the server to know when a response can be retrieved. Although this approach is actually synchronous in nature and won't improve request processing times, it has the psychological benefit that a progress bar can be displayed during polling.

In addition to decoupling integral business logic (which can be a formidable challenge), less central processes such as logging and sending e-mail are very good candidates to consider. There is no reason to have a client wait for such tasks to complete when performance is of the essence. E-mail in particular is a very good candidate for decoupling. Let's have a closer look.

Case Study: Asynchronous E-mail
Sending e-mail the traditional way (as part of a synchronous request) poses some problems. First of all, connecting to an e-mail server requires a network round-trip and it might be slow, especially if the server is very busy. An overloaded e-mail server can even make a service that relies on e-mail temporarily unavailable.

XA Transaction Support
Another easily overlooked issue is that e-mail servers are commonly nontransactional by nature. This can cause inconsistent notifications when transactions are rolled back - a message can't be cancelled after it has been queued. Fortunately, JMS supports transactions and can fix this problem by delaying the delivery of a message until its underlying transaction is committed.

Take into account that when accessing the database and transaction-aware JMS, you will need to use XA and two-phase commit (2PC) transactions. It is possible to emulate XA with non-XA resources, but you might end up with inconsistent data. Enabling XA is a configuration issue and usually requires no changes in code. See the WebLogic documentation for details.

More Stories By John-Axel Stråhlman

John-Axel Stråhlman is the founder and CEO of Sanda Interactive Ltd (www.stc-interactive.com), a software consulting company based in Espoo, Finland. He is a distributed systems specialist and has been working as a consultant for his clients' projects for more than five years.

Comments (8) View Comments

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.


Most Recent Comments
John-Axel Strahlman 09/10/05 01:59:30 PM EDT

The source code for this article has been updated. You can access it by clicking on the source code link below the article.

John-Axel

mark sisson 08/30/05 12:43:57 PM EDT

I'm trying to find a download of sample code for this article but only found a SMALL link at the bottom of the article that is a link to a little snipet of code.

Is there a full blown example that accompanies this article? It is exactly what I've been looking for !!!

Thanks in advance.
mark

Charles Steinberg 05/24/05 03:26:05 PM EDT

John:
A question related to the configuration database for WLI 8.1: I am looking for documentation on the sizing of the WLI Database, vs. the Application database. Do you have any information to help establish a baseline?

John-Axel Strahlman 03/28/05 01:52:08 PM EST

Meir,

You need to configure JMS queues and write an MDB that does the asynchronous processing. The framework will only work on an application running on WebLogic Server 6.1 or newer. Drop me an email if you need more specific instructions.

The link to the performance guide is missing a slash between products and wlserver, sorry about that.

John-Axel

meir 03/24/05 04:02:49 PM EST

1.try to press on:

http://dev2dev.bea.com/productswlserver/whitepapers/WL_JMS_Perform_GD.jsp
and no response !!!

2.what kind of weblogic software needed to install?

3.how do i use this code:

Listing 3: Framework sample usage

DistributedLogger logger =
new DistributedLogger();

String text =
"Hello asynchronous execution!"

logger.setText(text);
TaskDistributor.execute(
logger, //Command instance
1000, //delay
true, //runEverywhere
false, //persisted
false, //enableXA
4); //delay.

i mean from a "main" program that includes "weblogic" classes?

Patricia Thomas 03/14/05 04:38:23 PM EST

We're also using JMS for several asynchronous tasks, but never thought of using a generic command processor like this. Until now, we have used dedicated queues and MDBs for each task, but this is clearly a better and more manageable solution! Thanks!

John-Axel Strahlman 03/01/05 03:33:24 AM EST

Yes, all your CommandMessage classes need to be in the classpath of the server (or servers) that does the execution.

Steve Rogers 02/28/05 02:50:21 PM EST

I assume each new type of CommandMessage, like the DistributedLogger, have to be in the Classpath of the Server. Otherwise, can the serialized objects method be executed?

@ThingsExpo Stories
Organizations planning enterprise data center consolidation and modernization projects are faced with a challenging, costly reality. Requirements to deploy modern, cloud-native applications simultaneously with traditional client/server applications are almost impossible to achieve with hardware-centric enterprise infrastructure. Compute and network infrastructure are fast moving down a software-defined path, but storage has been a laggard. Until now.
Dion Hinchcliffe is an internationally recognized digital expert, bestselling book author, frequent keynote speaker, analyst, futurist, and transformation expert based in Washington, DC. He is currently Chief Strategy Officer at the industry-leading digital strategy and online community solutions firm, 7Summits.
Digital Transformation is much more than a buzzword. The radical shift to digital mechanisms for almost every process is evident across all industries and verticals. This is often especially true in financial services, where the legacy environment is many times unable to keep up with the rapidly shifting demands of the consumer. The constant pressure to provide complete, omnichannel delivery of customer-facing solutions to meet both regulatory and customer demands is putting enormous pressure on...
IoT is at the core or many Digital Transformation initiatives with the goal of re-inventing a company's business model. We all agree that collecting relevant IoT data will result in massive amounts of data needing to be stored. However, with the rapid development of IoT devices and ongoing business model transformation, we are not able to predict the volume and growth of IoT data. And with the lack of IoT history, traditional methods of IT and infrastructure planning based on the past do not app...
"Akvelon is a software development company and we also provide consultancy services to folks who are looking to scale or accelerate their engineering roadmaps," explained Jeremiah Mothersell, Marketing Manager at Akvelon, in this SYS-CON.tv interview at 21st Cloud Expo, held Oct 31 – Nov 2, 2017, at the Santa Clara Convention Center in Santa Clara, CA.
DXWorldEXPO LLC, the producer of the world's most influential technology conferences and trade shows has announced the 22nd International CloudEXPO | DXWorldEXPO "Early Bird Registration" is now open. Register for Full Conference "Gold Pass" ▸ Here (Expo Hall ▸ Here)
More and more brands have jumped on the IoT bandwagon. We have an excess of wearables – activity trackers, smartwatches, smart glasses and sneakers, and more that track seemingly endless datapoints. However, most consumers have no idea what “IoT” means. Creating more wearables that track data shouldn't be the aim of brands; delivering meaningful, tangible relevance to their users should be. We're in a period in which the IoT pendulum is still swinging. Initially, it swung toward "smart for smart...
IoT is rapidly becoming mainstream as more and more investments are made into the platforms and technology. As this movement continues to expand and gain momentum it creates a massive wall of noise that can be difficult to sift through. Unfortunately, this inevitably makes IoT less approachable for people to get started with and can hamper efforts to integrate this key technology into your own portfolio. There are so many connected products already in place today with many hundreds more on the h...
Here are the Top 20 Twitter Influencers of the month as determined by the Kcore algorithm, in a range of current topics of interest from #IoT to #DeepLearning. To run a real-time search of a given term in our website and see the current top influencers, click on the topic name. Among the top 20 IoT influencers, ThingsEXPO ranked #14 and CloudEXPO ranked #17.
Join IBM November 1 at 21st Cloud Expo at the Santa Clara Convention Center in Santa Clara, CA, and learn how IBM Watson can bring cognitive services and AI to intelligent, unmanned systems. Cognitive analysis impacts today’s systems with unparalleled ability that were previously available only to manned, back-end operations. Thanks to cloud processing, IBM Watson can bring cognitive services and AI to intelligent, unmanned systems. Imagine a robot vacuum that becomes your personal assistant tha...
As data explodes in quantity, importance and from new sources, the need for managing and protecting data residing across physical, virtual, and cloud environments grow with it. Managing data includes protecting it, indexing and classifying it for true, long-term management, compliance and E-Discovery. Commvault can ensure this with a single pane of glass solution – whether in a private cloud, a Service Provider delivered public cloud or a hybrid cloud environment – across the heterogeneous enter...
The Jevons Paradox suggests that when technological advances increase efficiency of a resource, it results in an overall increase in consumption. Writing on the increased use of coal as a result of technological improvements, 19th-century economist William Stanley Jevons found that these improvements led to the development of new ways to utilize coal. In his session at 19th Cloud Expo, Mark Thiele, Chief Strategy Officer for Apcera, compared the Jevons Paradox to modern-day enterprise IT, examin...
DXWorldEXPO LLC announced today that ICC-USA, a computer systems integrator and server manufacturing company focused on developing products and product appliances, will exhibit at the 22nd International CloudEXPO | DXWorldEXPO. DXWordEXPO New York 2018, colocated with CloudEXPO New York 2018 will be held November 11-13, 2018, in New York City. ICC is a computer systems integrator and server manufacturing company focused on developing products and product appliances to meet a wide range of ...
Major trends and emerging technologies – from virtual reality and IoT, to Big Data and algorithms – are helping organizations innovate in the digital era. However, to create real business value, IT must think beyond the ‘what’ of digital transformation to the ‘how’ to harness emerging trends, innovation and disruption. Architecture is the key that underpins and ties all these efforts together. In the digital age, it’s important to invest in architecture, extend the enterprise footprint to the cl...
DXWorldEXPO LLC announced today that All in Mobile, a mobile app development company from Poland, will exhibit at the 22nd International CloudEXPO | DXWorldEXPO. All In Mobile is a mobile app development company from Poland. Since 2014, they maintain passion for developing mobile applications for enterprises and startups worldwide.
In an era of historic innovation fueled by unprecedented access to data and technology, the low cost and risk of entering new markets has leveled the playing field for business. Today, any ambitious innovator can easily introduce a new application or product that can reinvent business models and transform the client experience. In their Day 2 Keynote at 19th Cloud Expo, Mercer Rowe, IBM Vice President of Strategic Alliances, and Raejeanne Skillern, Intel Vice President of Data Center Group and ...
"We are a well-established player in the application life cycle management market and we also have a very strong version control product," stated Flint Brenton, CEO of CollabNet,, in this SYS-CON.tv interview at 18th Cloud Expo at the Javits Center in New York City, NY.
In his session at @ThingsExpo, Arvind Radhakrishnen discussed how IoT offers new business models in banking and financial services organizations with the capability to revolutionize products, payments, channels, business processes and asset management built on strong architectural foundation. The following topics were covered: How IoT stands to impact various business parameters including customer experience, cost and risk management within BFS organizations.
While the focus and objectives of IoT initiatives are many and diverse, they all share a few common attributes, and one of those is the network. Commonly, that network includes the Internet, over which there isn't any real control for performance and availability. Or is there? The current state of the art for Big Data analytics, as applied to network telemetry, offers new opportunities for improving and assuring operational integrity. In his session at @ThingsExpo, Jim Frey, Vice President of S...
With the introduction of IoT and Smart Living in every aspect of our lives, one question has become relevant: What are the security implications? To answer this, first we have to look and explore the security models of the technologies that IoT is founded upon. In his session at @ThingsExpo, Nevi Kaja, a Research Engineer at Ford Motor Company, discussed some of the security challenges of the IoT infrastructure and related how these aspects impact Smart Living. The material was delivered interac...