OTel Context Propagation for MQ Applications

OpenTelemetry (OTel) tracing relies on context being propagated from one component in an application stack to another. While IBM MQ does have some ability to carry that context with messages, the OTel SDK design does not make that flow automatic. This post shows how we can extract the context for some applications, and then use OTel context propagation techniques to improve the observability of applications using MQ.

In particular in this post, I’ll talk about applications using MQ with the Node.js and Go interfaces.

Continue reading “OTel Context Propagation for MQ Applications”

This post was last updated on November 20th, 2024 at 07:28 pm

Node.js Add-ons: Object transformation performance

While working on the redesigned Node.js C++ add-on for MQ, I had a question about transforming objects. What was the best method for Node.js performance? Noone answered the question on the internal channels I tried. I also couldn’t find anything definitive on external documentation or blogs. So I wrote my own tests …

Continue reading “Node.js Add-ons: Object transformation performance”

This post was last updated on May 24th, 2023 at 12:30 pm

MQI Node.js library: an experimental reimplementation

The MQI library for Node.js applications first appeared in 2017. One of the first articles about it is here. Regular maintenance and updates to the library ensured it kept up with newer MQ and NodeJS features. But it seemed time to do a more extensive rewrite of the package, and that’s why I’m writing this article. I’ve put an experimental reimplementation on GitHub of the library for you to try out, before it goes into the mainstream release. Originally in the “napi” branch, it’s been promoted to the master branch.

Update: This new version is now on npm as the ibmmq 2.0.0 release and has been merged into the main GitHub branch.

Continue reading “MQI Node.js library: an experimental reimplementation”

This post was last updated on June 22nd, 2023 at 08:46 am

MQ and Node.js: an update to the TypeScript interface

I recently wrote an article about new TypeScript bindings for the MQ and Node.js interface. Version 0.9.21 of the MQ Node.js interface includes an update to the TypeScript definitions that can assist further in writing correct programs by describing how MQI flags or bitfield parameters are set. Showing how this new capability works was a bit too long to simply add to the original article. So I’ve written this piece.

Continue reading “MQ and Node.js: an update to the TypeScript interface”

This post was last updated on January 28th, 2022 at 07:43 pm

MQ and Node.js: working with TypeScript

MQ application programs for the Node.js environment can now use TypeScript definitions. This brings the opportunity to compile and check your JavaScript programs for correctness before running them. This post will talk more about what TypeScript is and how it can help your MQ Node.js development activity.

Substantial credit for the API definitions and translations of the example programs needs to be given to Andre, who submitted a Pull Request to our github repository.

Continue reading “MQ and Node.js: working with TypeScript”

This post was last updated on January 26th, 2022 at 01:53 pm

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

IBM MQ and Node.js

A new way to develop MQ programs running in Node

MQ has always supported a wide range of API styles, languages and environments to enable applications to be written in whichever way a developer feels at home. There is the full-function procedural API, often called from C or Cobol programs; object-oriented varieties of that interface such as for Java and C#; and there is the JMS model.

One of my previous projects involved creation of a  Go binding for MQ. There are client APIs and protocols with simpler interfaces that can also connect to MQ, such as MQ Light and MQTT. And there are more than just these examples – the new REST messaging API is yet another. One environment where a lot of new applications are developed is Node.js, with JavaScript being the associated programming language.

And so, as part of making it easy for people to access MQ from Node, I’ve now published a JavaScript API implementation on github.

Continue reading “IBM MQ and Node.js”

This post was last updated on November 23rd, 2019 at 12:07 am