MQ

MQ

Join this online group to communicate across IBM product users and experts by sharing advice and best practices with peers and staying up to date regarding product enhancements.

 View Only

Announcing mq-rest-admin 1.1: IBM MQ administration libraries for Python, Java, and Go

By Phillip Moore posted Tue February 17, 2026 08:40 AM

  

nnouncing mq-rest-admin 1.1: IBM MQ administration libraries for Python, Java, and Go

I'm pleased to announce the 1.1 release of the mq-rest-admin project family — a set of libraries for administering IBM MQ queue managers through the REST API, now available in three languages.

From one library to three

When I released pymqrest earlier this year, it was a single Python library. I wanted to see the same approach available across as many modern languages as possible. The 1.1 release delivers on that: Python, Java, and Go now share feature parity, all built on the same architecture and the same canonical mapping data.

One mapping, every language

At the heart of the project is mapping-data.json, maintained in the shared mq-rest-admin-common repository. This single file defines the bidirectional mappings between terse MQSC attribute tokens (CURDEPTH, MAXDEPTH, DEFPSIST) and readable snake_case names (current_queue_depth, max_queue_depth, default_persistence). The attribute mappings are language-neutral — every library uses the same snake_case names. Method names follow each language's conventions (display_queue() in Python, displayQueue() in Java, DisplayQueue() in Go), but the mapped attributes are identical across all three. When a mapping is added or corrected, every library picks it up automatically.

What each library provides

All three libraries wrap the runCommandJSON REST endpoint. There is no C client dependency — everything runs over HTTPS.

  • 130+ command methods covering the full MQSC verb set
  • Automatic attribute mapping with opt-out at session or per-call level
  • Idempotent ensure methods for 16 object types: define if missing, alter only what changed, no-op when already correct
  • Synchronous start/stop methods that poll until the requested state is reached
  • Flexible authentication: mutual TLS client certificates, LTPA token login, and HTTP Basic

Language-specific highlights

Python (pymqrest)

  • Install: pip install pymqrest
  • snake_case method names (display_queue(), ensure_qlocal())
  • httpx transport with async support
  • 100% branch coverage, strict mypy + ty typing

Java (mq-rest-admin)

  • Maven Central: io.github.wphillipmoore:mq-rest-admin
  • camelCase method names (displayQueue(), ensureQlocal())
  • java.net.http.HttpClient transport
  • Zero runtime dependencies beyond Gson

Go (mqrestadmin)

  • Go standard library only, zero external dependencies
  • PascalCase method names (DisplayQueue(), EnsureQlocal())
  • context.Context integration for all I/O methods

What's coming next

Ruby and Rust ports are already under way — both repositories are public on GitHub. Because every implementation shares the same API shape and semantics — the same command coverage, the same ensure behaviour, the same attribute mappings — adding a new language is primarily a matter of expressing those patterns idiomatically.

If your language isn't covered yet, I'd genuinely like to hear about it. Open an issue on the common repository and let us know what you need. The mapping data and design patterns are ready — a new port is more tractable than you might think.

A bit of history

Some of you may remember the Perl5 MQSeries module on CPAN. I maintained that library years ago, and this project picks up a thread I left a long time ago. Seeing it grow from a single Python library to a multi-language family has been deeply satisfying.

For the full backstory, see: Building pymqrest

Links

Feedback, bug reports, and contributions are welcome across all repositories.

0 comments
11 views

Permalink