Welcome!

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

Related Topics: Weblogic

Weblogic: Article

Run-Time Management of WebLogic Messaging Services

Reinforce your enterprise-messaging infrastructure

As Internet services have evolved and gradually become more and more distributed in nature, enterprise messaging has grown into one of the most important parts of Web application infrastructure. Applications can transfer an enormous amount of messages in a short amount of time, and the data being transferred is often very essential to the underlying business processes.

However important the data might be, many enterprise applications aren't fully equipped to recover from common messaging problems. Sure, messages might be persisted to a data store, but systems often lack reliable and adequately flexible mechanisms for monitoring and administration - something as principal as proper handling of failed messages might be overlooked.

In this article I will discuss WebLogic messaging and the Java Message Service (JMS) from an administrative point of view - we will take a look at how to give business-critical messages the attention they deserve and how to implement management tools for ensuring a smooth message flow for your application.

The Enterprise Application Middleman
Enterprise messaging is all about the exchange of data between disparate systems, a form of intercomputer communication that invariably requires special measures for successful operation. Process-to-process communication over networks without some form of intermediary would be extremely difficult to maintain, so we use message-oriented-middleware systems (MOMs), such as WebLogic JMS, to offload the responsibilities of guaranteed delivery, message notifications, and all other complicated inherent issues. Think of MOMs as the postal service of enterprise applications.

WebLogic JMS is a highly reliable service and if it acknowledges a sent message, you can indeed be sure that the message has been received. That is, however, where the guarantees end; the client application (message producer) has no way of knowing if the receiving application (message consumer) has successfully processed the message, not unless you implement your own acknowledgement system.

Problems, What Problems?
Whenever you have two computers communicating with each other, sooner or later something is bound to go wrong. Unavailable subsystems, network failures, message overflows, and deadlocks are just a few common predicaments that you might stumble into. Instead of trying to make sure that nothing ever goes wrong, be sure to prepare for situations when something does go wrong.

The corrective actions for each type of processing failure need to be evaluated separately. Some problems (such as busy subsystems) are easily fixed by automatic retries, while others require manual intervention. Many services also don't support any form of reprocessing or error handling whatsoever, which makes it the responsibility of the client application to recover from failures.

Let's assume that your business model obligates you to take every effort to process a message before giving up and sending a negative acknowledgement back to the client application. If that were the case, then you should probably retry processing automatically a couple of times, and when that doesn't help, someone should be able to manually examine the failing message. Let's take a look at a common way to achieve this in practice.

Message Management, Take One
A very robust message-administration technique is to redirect all failing messages to an error queue and have a consumer save the embodied data and properties to a database. Later, the messages can be investigated by an administrator and optionally re-created and resent. Using a database to store messages gives you very high data integrity and convenience. Here are the main steps required for the implementation:

  1. Configure a persistent error queue for your destinations in your config.xml file. Error queues are also known as dead message queues and are regular JMS destinations where failing messages will be sent automatically. Messages are directed to the error queue by adding the ErrorDestination parameter to your active destinations.
  2. Configure a consumer for your error queue and make it read the stored data and properties of failed messages by using the accessor methods of the javax.jms.Message class.
  3. Save the recovered data together with the name of the original destination of the message to a database table. The original destination can be obtained by the getJMSDestination() method of the Message class.
  4. Write methods that read the data from your database, display it, and give the option to resend by re-creating messages from the saved data and sending them to the original destination.
Having done all that, you have a very flexible system for managing messaging problems. The implementation requires quite a lot of work, but is fairly straightforward if you are familiar with JMS and know the basics. This is a very good and often-used solution, but there is another approach that is simpler to implement, doesn't require using a database, and gives you the added benefit of allowing you to peek into the content of any queue at run time.

QueueBrowser for Queue Browsing
The JMS API includes tools that enable full access to queued messages. The tools I'm talking about are the javax.jms.QueueBrowser interface and message selectors. The QueueBrowser is an interface that can retrieve messages from a given queue without consuming them. It can return all messages or, with the help of message selectors, only a subset of the messages.

Our alternative queue-management approach is to use passive error queues for storing failed messages and to use the QueueBrowser for listing them. Single messages can then be selected and resent, copied, or deleted.

Here are the step-by-step instructions for developing a simple queue-management system that handles failed messages:

  1. Configure a persistent error queue for your destinations in your config.xml file. You don't need to configure or write any consumers for the error queue.
  2. Use the QueueBrowser interface to display all of the messages in your error queue. Browsing through queued messages is very simple and only requires a couple lines of code (see Listing 1).
  3. When the user selects a message, you can retrieve it by using its message ID as a criterion for the message selector parameter (see Listing 2). After retrieving it, you can easily redeliver it to its original destination or even to some other passive queue for safekeeping. You can also delete the message by using a QueueReceiver with the same message selector parameter (see Listing 3). You can find a detailed introduction to JMS message selectors in the Sun J2EE API documentation of the javax.jms.Message interface.
In this approach, the application container takes care of persisting the messages for you, which saves you from doing some redundant work. You also avoid a lot of tedious data conversion because you are working with JMS Message objects the whole time.

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 (2) 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 11/01/05 08:45:37 AM EST

You are right Neil, the amount of MBeans is breathtaking. However, they are very thoroughly and conveniently documented in the WLS 8.1 API Reference, which can be found here:

http://e-docs.bea.com/wls/docs81/javadocs/index.html

Look under the weblogic.management.runtime package for MBeans that are most suitable for monitoring. For instance, the JMSDestinationRuntimeMBean is very useful for monitoring JMS destinations.

John-Axel

Neil Hornbeck 10/27/05 08:32:34 AM EDT

This is all excellent advice. The only catch is that there are so many MBeans in WebLogic that is almost impossible to determine which MBeans are critical to monitor, and which attributes of these MBeans tell you what you need to know. Just dumping the MBean list is overwhelming. BEA should publish a guide to the top 50 or so beans and just what exactly they can tell us.

@ThingsExpo Stories
"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.
"Space Monkey by Vivent Smart Home is a product that is a distributed cloud-based edge storage network. Vivent Smart Home, our parent company, is a smart home provider that places a lot of hard drives across homes in North America," explained JT Olds, Director of Engineering, and Brandon Crowfeather, Product Manager, at Vivint Smart Home, in this SYS-CON.tv interview at @ThingsExpo, held Oct 31 – Nov 2, 2017, at the Santa Clara Convention Center in Santa Clara, CA.
It is of utmost importance for the future success of WebRTC to ensure that interoperability is operational between web browsers and any WebRTC-compliant client. To be guaranteed as operational and effective, interoperability must be tested extensively by establishing WebRTC data and media connections between different web browsers running on different devices and operating systems. In his session at WebRTC Summit at @ThingsExpo, Dr. Alex Gouaillard, CEO and Founder of CoSMo Software, presented ...
"There's plenty of bandwidth out there but it's never in the right place. So what Cedexis does is uses data to work out the best pathways to get data from the origin to the person who wants to get it," explained Simon Jones, Evangelist and Head of Marketing at Cedexis, 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.
WebRTC is great technology to build your own communication tools. It will be even more exciting experience it with advanced devices, such as a 360 Camera, 360 microphone, and a depth sensor camera. In his session at @ThingsExpo, Masashi Ganeko, a manager at INFOCOM Corporation, introduced two experimental projects from his team and what they learned from them. "Shotoku Tamago" uses the robot audition software HARK to track speakers in 360 video of a remote party. "Virtual Teleport" uses a multip...
"IBM is really all in on blockchain. We take a look at sort of the history of blockchain ledger technologies. It started out with bitcoin, Ethereum, and IBM evaluated these particular blockchain technologies and found they were anonymous and permissionless and that many companies were looking for permissioned blockchain," stated René Bostic, Technical VP of the IBM Cloud Unit in North America, in this SYS-CON.tv interview at 21st Cloud Expo, held Oct 31 – Nov 2, 2017, at the Santa Clara Conventi...
Gemini is Yahoo’s native and search advertising platform. To ensure the quality of a complex distributed system that spans multiple products and components and across various desktop websites and mobile app and web experiences – both Yahoo owned and operated and third-party syndication (supply), with complex interaction with more than a billion users and numerous advertisers globally (demand) – it becomes imperative to automate a set of end-to-end tests 24x7 to detect bugs and regression. In th...
SYS-CON Events announced today that Telecom Reseller has been named “Media Sponsor” of SYS-CON's 22nd International Cloud Expo, which will take place on June 5-7, 2018, at the Javits Center in New York, NY. Telecom Reseller reports on Unified Communications, UCaaS, BPaaS for enterprise and SMBs. They report extensively on both customer premises based solutions such as IP-PBX as well as cloud based and hosted platforms.
SYS-CON Events announced today that CrowdReviews.com has been named “Media Sponsor” of SYS-CON's 22nd International Cloud Expo, which will take place on June 5–7, 2018, at the Javits Center in New York City, NY. CrowdReviews.com is a transparent online platform for determining which products and services are the best based on the opinion of the crowd. The crowd consists of Internet users that have experienced products and services first-hand and have an interest in letting other potential buye...
"MobiDev is a software development company and we do complex, custom software development for everybody from entrepreneurs to large enterprises," explained Alan Winters, U.S. Head of Business Development at MobiDev, 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.
Coca-Cola’s Google powered digital signage system lays the groundwork for a more valuable connection between Coke and its customers. Digital signs pair software with high-resolution displays so that a message can be changed instantly based on what the operator wants to communicate or sell. In their Day 3 Keynote at 21st Cloud Expo, Greg Chambers, Global Group Director, Digital Innovation, Coca-Cola, and Vidya Nagarajan, a Senior Product Manager at Google, discussed how from store operations and ...
In his session at 21st Cloud Expo, Carl J. Levine, Senior Technical Evangelist for NS1, will objectively discuss how DNS is used to solve Digital Transformation challenges in large SaaS applications, CDNs, AdTech platforms, and other demanding use cases. Carl J. Levine is the Senior Technical Evangelist for NS1. A veteran of the Internet Infrastructure space, he has over a decade of experience with startups, networking protocols and Internet infrastructure, combined with the unique ability to it...
"Cloud Academy is an enterprise training platform for the cloud, specifically public clouds. We offer guided learning experiences on AWS, Azure, Google Cloud and all the surrounding methodologies and technologies that you need to know and your teams need to know in order to leverage the full benefits of the cloud," explained Alex Brower, VP of Marketing at Cloud Academy, in this SYS-CON.tv interview at 21st Cloud Expo, held Oct 31 – Nov 2, 2017, at the Santa Clara Convention Center in Santa Clar...
A strange thing is happening along the way to the Internet of Things, namely far too many devices to work with and manage. It has become clear that we'll need much higher efficiency user experiences that can allow us to more easily and scalably work with the thousands of devices that will soon be in each of our lives. Enter the conversational interface revolution, combining bots we can literally talk with, gesture to, and even direct with our thoughts, with embedded artificial intelligence, whic...
SYS-CON Events announced today that Evatronix will exhibit at SYS-CON's 21st International Cloud Expo®, which will take place on Oct 31 – Nov 2, 2017, at the Santa Clara Convention Center in Santa Clara, CA. Evatronix SA offers comprehensive solutions in the design and implementation of electronic systems, in CAD / CAM deployment, and also is a designer and manufacturer of advanced 3D scanners for professional applications.
Leading companies, from the Global Fortune 500 to the smallest companies, are adopting hybrid cloud as the path to business advantage. Hybrid cloud depends on cloud services and on-premises infrastructure working in unison. Successful implementations require new levels of data mobility, enabled by an automated and seamless flow across on-premises and cloud resources. In his general session at 21st Cloud Expo, Greg Tevis, an IBM Storage Software Technical Strategist and Customer Solution Architec...
To get the most out of their data, successful companies are not focusing on queries and data lakes, they are actively integrating analytics into their operations with a data-first application development approach. Real-time adjustments to improve revenues, reduce costs, or mitigate risk rely on applications that minimize latency on a variety of data sources. In his session at @BigDataExpo, Jack Norris, Senior Vice President, Data and Applications at MapR Technologies, reviewed best practices to ...
An increasing number of companies are creating products that combine data with analytical capabilities. Running interactive queries on Big Data requires complex architectures to store and query data effectively, typically involving data streams, an choosing efficient file format/database and multiple independent systems that are tied together through custom-engineered pipelines. In his session at @BigDataExpo at @ThingsExpo, Tomer Levi, a senior software engineer at Intel’s Advanced Analytics gr...
When talking IoT we often focus on the devices, the sensors, the hardware itself. The new smart appliances, the new smart or self-driving cars (which are amalgamations of many ‘things’). When we are looking at the world of IoT, we should take a step back, look at the big picture. What value are these devices providing? IoT is not about the devices, it’s about the data consumed and generated. The devices are tools, mechanisms, conduits. In his session at Internet of Things at Cloud Expo | DXWor...
Everything run by electricity will eventually be connected to the Internet. Get ahead of the Internet of Things revolution. In his session at @ThingsExpo, Akvelon expert and IoT industry leader Sergey Grebnov provided an educational dive into the world of managing your home, workplace and all the devices they contain with the power of machine-based AI and intelligent Bot services for a completely streamlined experience.