MQ JMS and Spring Boot – improved efficiency

The efficiency of MQ JMS is now improved when used in a Spring Boot application.

The Spring Framework provides simple ways for Java programs to use a variety of interfaces. Its JMS component includes classes that help a program wait for new messages, similar to a Message Driven Bean. The default behaviour of the Spring implementation is known to be non-optimal when working with IBM MQ and I wanted to improve the efficiency.

This article shows recent improvements to Spring Boot and the corresponding MQ JMS Spring Boot component. They remove the need for application developers to know about, and to write code to deal with that inefficiency.

Continue reading “MQ JMS and Spring Boot – improved efficiency”

This post was last updated on March 30th, 2020 at 04:41 pm

Viewing MQ configurations with Grafana

This post shows how you can use Grafana to selectively view information about your MQ configuration. Which may sound a little odd. Grafana’s strength is primarily to show statistics and metrics in pretty graphs. So why would we want to use it to look at queue definitions? The answer is that you usually would not! There are many more appropriate tools for displaying and updating the queue manager configuration – even the MQ Explorer or MQ Console are better. But there may be times when a limited set of information may be desirable, so you can link from a graph to a different view, within the same tool.

But another important aspect that I hope this shows is the power of a common data format. The techniques I’ll show here could be used to combine a variety of different tools, and perhaps this will give you some ideas.

Continue reading “Viewing MQ configurations with Grafana”

This post was last updated on November 25th, 2019 at 02:18 pm

Exploring the MQ archives: Education 1996-style

Recently, we have been creating and publishing a lot of material to help educate people about MQ. You can find that here.

But how might you have learned about MQ in its early days? While hunting through archives for something that I was, in the end, unable to find, I did come across one piece of education that was created over 20 years ago.

You can now see what it was like in this video.

Table of Contents for the training program

Just a few thoughts that I had:

  • While the style may be different, and details vary, a lot of the content is recognisably the same
  • It’s nice to see the MQ Dancers logo return, even as a tiny icon
  • In 1996, the course ended by saying that MQ was “long-term”. Yes, they got that right.

I hope you enjoy it.

This post was last updated on November 20th, 2019 at 09:14 pm

Using Prometheus to monitor MQ channel status

In 2016 I wrote about how MQ’s resource statistics can work with a number of time-series databases, including Prometheus. This permits monitoring using the same tools that many customers use for monitoring other products. It allows easy creation of dashboards using tools such as Grafana.

Since that original version, we’ve made a number of enhancements to the packages that underpin that monitoring capability. For example, more database options were added; a JSON formatter appeared. One notable change was when we split the monitoring agent programs into a separate GitHub repository, making it easier to work with just the pieces you needed.

And now, I’ve released some changes that allow Prometheus and generic JSON processors to see some key channel status information. In particular, a Grafana dashboard can easily highlight channels that are not running.

Continue reading “Using Prometheus to monitor MQ channel status”

This post was last updated on November 25th, 2019 at 09:53 am

Application Activity – formatting and extracting key information

MQ Application Activity reports have a lot of detail. This post shows a simple way to extract key fields for simpler processing.

Application Activity Trace

Application Activity Trace is a mechanism on the MQ Distributed platforms that give a report of all the MQI calls made by a program. Originally configured via a text file, MQ V9 enhanced them by allowing a monitoring application to subscribe to topics that describe the application or channel of interest.
See how to extract key fields from events

This post was last updated on November 25th, 2019 at 09:45 am

Easier use of the Node.js interface for MQ

In November, I wrote about a new language binding to MQ, making it possible to use Javascript in a Node.JS environment to access the MQ API. I published the first release of that code only through GitHub which required that you clone it locally before you could use it. Once the initial public exposure proved some stability to the interface, I added the ibmmq package to the npm repository meaning that you could simply refer to it in the descriptors (package.json) for your programs and npm would automatically download and install it.

But there was still one drawback. The package builds on, and requires, the MQ C client runtime libraries. That needed a separate operation to complete the installation, as those libraries came from product installation media or required you to login to an authorised location before they could be accessed.

No longer though.

Recent updates to the MQ Redistributable Client package and then to the MQ Node.js component have made it much simpler to get an MQ application running, and to create standalone containers for those applications.

Continue reading “Easier use of the Node.js interface for MQ”

This post was last updated on November 24th, 2019 at 02:59 pm

SMF reports for MQ with JSON format

Turn MQ SMF data into JSON for simple consumption and analytics. Use a free open source tool for Windows and Linux to process your mainframe statistics.

On z/OS, MQ produces a lot of information about its usage through SMF records. One tool I published on GitHub a couple of years ago was designed to take collected SMF data and process it into a more consumable format. The goal was to create something that did nothing more than format the data, rather than try to analyse it in the manner of SupportPac MP1B. The analysis would be done using independent tools.

The comma-separated-value format is ideal for importing into spreadsheets and databases. Many of our z/OS customers have been helped by reports created from their data, and analysed through SQL queries.

While I didn’t write about it in a blog post then, I did publish a short video showing it in action. And since the original release, I’ve made regular updates to the code. Mostly these have been to simplify the SQL processing.

I’ve now updated the program to give a further output format option. It is intended to make it easy to feed SMF information to other analytics tools, many of which work with JSON structures. Other aspects of MQ administration can now be done with JSON-format data – the error logs on Distributed platforms, an event formatter (which is also available in MQ V9.0.5), the REST APIs for administration and messaging – and this is one further piece of a consistent story.

Read more about formatting MQ SMF as JSON

This post was last updated on November 25th, 2019 at 09:48 am

MQ JMS application development with Spring Boot

Application developers who are working in Java, using the JMS interface, often choose to work with the Spring Framework. Spring can simplify the coding of new applications by providing templates for common patterns, and has been successfully used for many
years
with the MQ JMS classes. The JmsTemplate class in Spring is the key interface here, but it still relies on having dependencies and configurations defined or coded.

The Spring Framework includes several modules for different capabilities. One of these components is Spring Boot. Spring
Boot starters conveniently pull in all the dependencies and auto-configuration libraries required to use a particular technology. This makes it very easy to get going with a new application and technology, faster than working directly with classes like JmsTemplate. So how can we enable this easy access for MQ applications?

In this post I described how MQ’s Java classes are available for direct download from Maven Central Repository. And we have now exploited that to create a Spring Boot Starter for MQ. You can download full source code for the module from GitHub.

Getting started with MQ Spring Boot

This post was last updated on November 20th, 2019 at 09:14 pm

Developing Java applications for MQ just got easier with Maven

Introduction

This post talks about a simpler way to develop Java applications for MQ, using a Maven repository to automatically install dependencies.

Application development for MQ requires access to the language-specific interfaces, libraries, headers, DLLs etc. You write an application and, depending on the language, the MQ-provided components are used within the IDE while you are writing code, checked during build processes, or referenced at runtime. If you want to make your application available to other people, then they will need access to at least the runtime MQ interfaces.

We made it much easier to distribute applications with the release of the MQ Redistributable Client packages.

And now we’ve also made it easier to write Java applications, so that you do not need to explicitly install anything before using MQ’s interfaces.

See more about setting up dependencies for your Java program

This post was last updated on February 9th, 2021 at 12:13 pm