One of the features of the newly-released MQ 9.3 is support for JMS 3, also known as Jakarta Messaging. There will be more information elsewhere about what that means for standalone JMS programs. There continues to be a JMS 2 package, of course, for ongoing compatibility. But JMS 3 introduces incompatibilities that mean that we need updated versions of other components to match if you want to move up to newer standards. This post will talk about supporting MQ Jakarta JMS in Spring Boot.
I’ll also discuss the issues I had when developing the new version – the annoying incompatible tooling upgrades I had to work through.
Continue reading “Supporting MQ Jakarta JMS in Spring Boot”
This post was last updated on June 30th, 2022 at 07:53 am
It never fails to amaze me how often the same question gets asked by different people from different projects at around the same time. This time, I was asked by two people about resolving subscription authorisation failures. I could find lots of information about IBM MQ publish/subscribe, and general descriptions of what security checks are made. But there was not so much on how to use information from the queue manager that can help to deal with the inevitable failures.
Continue reading “Resolving subscription authorisation failures”
This post was last updated on December 13th, 2021 at 01:23 pm
If you’ve done any work with the Spring frameworks for Java programs, then you will know that one of the good things about Spring is that it hides a lot of the underlying operations from you. But equally, one of the bad things about Spring is that it hides a lot of the underlying operations from you. I noticed that I was getting several questions about what was happening under the covers from people using the MQ Spring Boot starter. This post shows how you can see what Spring is doing to a queue manager.
Continue reading “What did Spring do to my queue manager”
This post was last updated on May 4th, 2021 at 08:50 pm
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
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
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