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 JMS and Spring: Spring Boot 2 now at end of regular support

Spring Boot 2 has now reached its “end of non-commercial support“. The lifecycle for that project is set by Spring’s owners; a major release typically has 2 years of open support before moving into a longer-term paid-for regime.

Continue reading “MQ JMS and Spring: Spring Boot 2 now at end of regular support”

This post was last updated on January 15th, 2024 at 02:15 pm

JMS, JNDI and LDAPS

A recent Idea opened against MQ asked for the ability to store JMS resources using a secure connection to LDAP servers. All the current LDAP support for JMSAdmin and Explorer is documented using the plaintext protocol, but could we use a TLS-protected connection? My first thought was that this was likely to be impossible without changing something – albeit likely small – in the product code. But as I needed to get an LDAP server running locally for other reasons, I thought I’d give it a go to see if my guess was right. It wasn’t; and so here’s how you can do it yourself.

Continue reading “JMS, JNDI and LDAPS”

This post was last updated on February 3rd, 2023 at 08:31 am

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

Resolving subscription authorisation failures

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

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

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