Tracing MQ JMS apps in Spring

The MQ JMS packages have options to permit configuration of internal tracing and related logging features. While debugging a recent project, I wanted to look at traces of both the MQ library, and some of the surrounding Spring behaviour. While possible, it was not as convenient as I would have liked. So I’ve added some new options that simplify tracing MQ JMS apps in Spring.

Continue reading “Tracing MQ JMS apps in Spring”

This post was last updated on September 12th, 2024 at 06:45 am

MQ Spring Boot: Advanced Configuration and Transactions

I was talking recently with an MQ customer who said they were considering a solution that used Spring Boot for an MQ application that would move messages reliably from one queue manager to another, doing some processing on the way. “Can we do that?” they asked. “Of course” was my reply. But naturally I had to then try it out myself.

To implement the idea, I had to dig into two aspects. I’d consider these as reasonably advanced features of Spring Boot. One part was being able to configure more than one queue manager’s connection in the resource properties file. The other was working with global JTA/XA transactions.

Continue reading “MQ Spring Boot: Advanced Configuration and Transactions”

Update – Spring Boot and Jakarta Messaging

I wrote recently about the support for Jakarta Messaging that is part of IBM MQ 9.3 and work to integrate it with Spring. At that point, I gave the mq-jms-spring-boot-starter a pre-release version number as there was not a formal version of the Spring Framework and Spring Boot packages. But that changes this week, with the release of Spring Boot 3.0.0. And so there is now a corresponding MQ release of the starter package, also version 3.0.0 to match.

> Task :bootRun

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v3.0.0)

2022-11-25T12:06:23.591Z  INFO 1091972 --- [           main] sample3.Requester                        : Starting Requester using Java 17.0.5 with PID 1091972 (mq-jms-spring/samples/s3.jms3/build/classes/java/main started by metaylor in mq-jms-spring/samples/s3.jms3)
2022-11-25T12:06:23.596Z  INFO 1091972 --- [           main] sample3.Requester                        : No active profile set, falling back to 1 default profile: "default"
...

Aside to the aside: this latest version of the MQ Boot Starter has new optional configuration parameters providing the equivalent of the -D command-line options that you might use for defining location and credentials for TLS keystores. Look at the ibmmq.jks parameters.

This post was last updated on November 26th, 2022 at 02:48 pm

Supporting MQ Jakarta JMS in Spring Boot

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

What did Spring do to my queue manager

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

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

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