A “major” update to the MQ Go package version

The Go language and toolchain did not have a good version control system when created. Systems built on Go could not easily define the levels of the dependencies underpinning the system. Various tools were developed to help with that such as dep and glide. But more recently, the Go compiler environment has defined modules as the way forward. The MQ Go packages are now available in a format that works with modules, with a major number version update to match. This post describes what has been done in the core MQ packages.

A separate post talks about changes in the mq-metric-samples repository that exploits these packages and enables monitoring in tools like Prometheus and Influx.

Continue reading “A “major” update to the MQ Go package version”

MQ API Exits – FAQ

In the past few months I seem to have been been sent a bunch of questions about MQ API Exits from a variety of developers. Some of the questions were repeated so I thought I’d try to collect them, tidy them up, and turn them into an FAQ article.

API Exits were originally made available for one platform in MQSeries V5.2 and then extended to the rest of the Distributed family in V5.3 so they have been around for a while.

Exits are an advanced topic and I’m not planning on going into much general information about these exits. I will assume that someone interested in this article already knows the basic principles and is comfortable working in this environment. For more information on the interfaces see the product documentation and the sample amqsaxe0.c exit.

Continue reading “MQ API Exits – FAQ”

Finding some positives

Have to find something good in the current situation, and here’s one thing that worked for me.

My passport expires later this year. I was a bit worried about finding a suitable gap in my schedule when I could do without it for a while. As soon as it became obvious there would not be any travel in the immediate future, I filled out the online form and used my phone to take and upload a new photo. The UK government site said the normal processing takes up to three weeks. 12 days later my new passport was delivered (with the blue/black cover). Much faster than I had expected.

I also need to get the US Global Entry renewal sorted out. That requires an initial background check from the UK which claims to take up to 2 weeks. I received the approval for that in 12 hours.

Just hope I get to use the passport soon…

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”

Accidental Plagiarism

This started out as a pleasant-enough chord/bass improvisation. Nothing special but I hoped it might inspire something.

Unfortunately, when I began to put a melody on top, it was sounding a little familiar. It’s a bit jerky because once I got to this point I didn’t bother cleaning up the performances.

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”

Flight is 25% cancelled

In the departure gate area at Heathrow, waiting for my plane to board. There are delays, and I can overhear conversations between crew, maintenance staff and agents. Eventually there’s an announcement – “the flight will be boarding soon, but can everyone who is seated in rows 32-40 please come to the side.”

The explanation given is that one of the exit doors at the back is broken. It is shut OK but will not open safely and cannot be repaired right away. So the decision is that noone will be allowed to sit in the rear section of the aircraft; they will have to be rebooked. If an emergency happens, they can get the remaining passengers out of the rest of the doors.

Once on board, I can see that the affected rows are taped off. They are not letting anyone spread out into those seats. There are many checks to ensure all the available seats are taken – the small gaps that often exist get filled in. There’s even an announcement that they will do a walkthrough of the cabin and you MUST be in the seat, not even using one of the lavs. Otherwise your seat WILL BE reassigned. While all that is going on, I can see from the window that there’s activity to remove the non-travelling passengers’ luggage. They claim they got all the right stuff off and left the correct stuff on.

What surprised me somewhat was that even after takeoff, when the emergency doors were not useful, they still didn’t allow people to spread out. But the light load did mean we got to Chicago on time, even after the long departure delay!