Running MQGem GUIs under WINE

MQGem with WINEWe spent the festive season partaking of a little wine which resulted in our recent announcement of the capability to run both the MQGem Software GUI applications, MO71 and MQEdit, on Intel Linux. This is achieved by running them under WINE. WINE is a fabulous piece of free software that comes from the WINE project. This software allows a huge range of Windows applications to run, virtually unchanged, on an Intel Linux machine. The software is not an emulator but rather translates Windows API calls to POSIX calls on the fly which means that it is fast and efficient. For most users, wine may even be already installed on your Linux system, for others, it will be as simple as issuing the command:-

yum install wine.i686

N.B. The MQGem GUIs are 32-bit Windows applications which is why you must install the wine.i686 package rather than letting the system decide which wine package you need based on the bitness of your O/S.

However, everybody’s Linux is just that little bit different. If you find when using the above command that it responds with:-

No package wine available.

then this means that the yum source repositories you currently use do not contain the WINE packages. The WINE packages are in the EPEL (Extra Packages for Enterprise Linux) repository which can be added to your yum as described in How can I install the packages from the EPEL software repository?

If the EPEL repository still refuses to play ball, there are a plethora of StackOverflow questions (with answers) to solve Cannot retrieve metalink for repository: epel.
Once you get WINE installed, there is one other piece of the puzzle. If you tried to run the mqmonntp.exe under WINE as-is, the GUI would run, but when you try to connect to MQ using it the following error would be shown.

Error connecting to 'MQG1' RC(2012) Environment error.

So before you do, you should download a new package from MQGem Software, an MQ WINE mapping layer. This is a shared object that maps from the MQI calls made that the Windows application expects to find in mqm.dll or mqic32.dll, and instead calls the locally installed entry points in the libmqm_r.so and libmqic_r.so libraries. These mapping packages are called mqm.dll.so and mqic32.dll.so.

So download the zipped tar file mq_wine.tgz, and untar the file using a command such as

tar -xvzf mq_wine.tgz

You need to put these libraries where WINE will find them. Your two choices are:

  • Put them in /usr/lib/wine
  • Put them where ever you like but ensure that the path is added to WINEDLLPATH environment variable.

Now download the latest version of MO71 or MQEdit and unzip it on your Linux system. We have made one or two minor changes to the programs to fix things we have discovered in our testing of them under WINE, so it is best if you start off with all the fixes to things we’ve found. If you already run MO71 with a Diamond or Enterprise licence then you can also copy your licence file across onto your Linux machine (assuming you’re on the same site for your Diamond licence). If you use an Emerald licence, then you’ll need one for this machine. If you’d like to try it out on Linux before you make your mind up to buy another Emerald, then please email support@mqgem.com to request a trial licence.

To run the program, use this command:-

wine mqmonntp [ MO71 parameters ]

Once you are comfortable that MO71 starts and runs correctly you may want to set up an icon on your desktop to issue this command and possibly run it in the background.

Cheers!

Visibility of QMgr’s Server in MO71

The MO71 product allows you to administer queue managers that are both local and remote to the machine where it runs. When remote, you can connect in via mode, or in client mode. Since WebSphere MQ V7.1 was released, queue managers could be configured as multi-instance, and client connections could be made with a comma-separated list of hostnames (and ports) in the CONNAME field.

This comma-separated CONNAME has been available to use in MO71’s direct client configuration since that time. You can also make MO71 client connections using a CCDT if you prefer.

When using a comma-separated list of hostnames, it is useful to know which of the hostnames you actually managed to connect to, perhaps so you can have a quick view of which machine is currently the primary in order to log into the machine directly, or because you have a preferential Primary and Backup machine and you need to know when the Backup is in use.

MO71 Client configuration

MO71 Client configuration for Multi-instance queue manager

MO71 showing multi-instance annotation

MO71 showing multi-instance annotation

When configuring the list of hostnames in MO71’s client connection dialog, you can now optionally add a string to be displayed when that hostname is the one successfully connected to. You don’t have to include the string for each hostname. You may prefer to only have the annotation on the screen when the Backup server is in use and so would omit the string for the primary hostname and add it to the secondary hostname.

Here are a few examples

Connection Name : win9.mqgem.com(1701) “Primary”, win12.mqgem.com(1701) “Secondary”
Connection Name : win9.mqgem.com(1701), win12.mqgem.com(1701) “**Backup**”

Note that you must configure the client channel directly for this annotation to work. You cannot, for example, use a channel defined in the Client Channel Definition Table (CCDT).


Comma-separated CONNAME has been in MO71 for a while, but the recent 9.0.2 release added the ability to see which of the instances is in use.

Can you see your QMgr for the trees?

When you have a lot of queue managers to manage, if you’re not careful it can get to point where you can’t see the wood for the trees. Where’s that queue manager I’m after/need to make a change to/have just been phoned about?

MO71 is capable of managing hundreds of queue managers, but you don’t have to spend your time scrolling down a very long list of queue managers looking for the one you want. There are several ways that MO71 allows you to organize your queue managers.

MO71 Main Window - Grouped QMgrs

MO71 Main Window showing Grouped QMgrs

Grouping

The main window of MO71 shows all your queue managers, and to arrange that otherwise long list, you can organize your queue managers into groups. A group name is set in the location dialog, along with the queue manager name and connection details (see the screenshot below).

Import and Set Group name

Set the Group name during import

You can also choose a group name when you import queue managers from the local machine, or from a CCDT, allowing your newly imported queue managers to be immediately placed in an appropriate group.

Network Names

MO71 Network View

MO71 Network View with one network selected

In addition to putting a queue manager in a group, you can also put each queue manager into one, or many, networks. Networks are other groupings of queue managers and can be anything you like, but some examples include by platform; by environment, for example, Devt, Test, QA, Production; or by application group. Clearly these would all overlap, you could have a Windows queue manager in the QA environment for the Sales application group. Adding that queue manager to all three networks then allows you to filter your queue manager list by any or all of these. As you’ll see in a moment, you can search by these network names, but they are also used for choosing which queue managers are shown in the network display.

MO71 Location Dialog

MO71 Location Dialog showing a group name and multiple network names.

Searching for queue managers

MO71 Main Window Search

MO71 Main Window with the Search bar

There are a number of places in MO71 where you can search for queue managers in the list. First there is the main window. If the search bar is not visible at the top of the list, enable it from the View menu. In this search bar you can reduce the queue managers shown temporarily by typing in a search string which can be part of the queue manager name, the queue manager location, the group name, the network name or the client connection name.

MO71 will remember your last 20 searches, so after you’ve used them once you’ll be able to select them from the drop-down list.

The other place this is useful is on a multi-queue manager list dialog. Again, typing your search string temporarily reduces the queue managers shown, and you can use buttons to easily add those shown to the dialog with one click.

MO71 Multi-QMgr queue list dialog

MO71 Multi-QMgr queue list dialog with search string

If you have a search string present in the main window when you open a list dialog, it’s search bar is initially populated with the same search string.

In both these locations you can explicitly search a specific field by qualifying your search string, for example adding “<net>” to indicate you only want to search network names.

Location Dialog Field Qualifier Qualifier Shortform
Queue Manager name qm m
Queue Manager Location loc l
Group Name grp g
Network Names net n
Client Connection Name conn c

When you use one of these qualifiers it should be specified between < and > characters.

So, don’t struggle with scrolling long lists of queue manager names, get your queue managers organised into groups and networks.


Most of these features have been in MO71 for a while, but the recent 9.0.1 release added the search bar to the multi-queue manager list dialog

Using the CCDT URL

MQGem recently delivered new versions of MO71 and MQSCX that support the new IBM MQ V9 release. As well as support for the new command level, they support other new IBM MQ V9 features. One such feature is the ability to have your Client Channel Definition Table (CCDT) hosted somewhere centralised, such as on an FTP server or web server. Prior to IBM MQ V9, this was only available to Java clients due to the fact that the language gave you the capability whenever you needed to specify a file name URI. Now in IBM MQ V9, ‘C’ clients (and unmanaged .NET clients) also have this feature.

Jon Rumsey has a great write-up of this feature on the MQDev Blog, MQ V9 Client Channel Table Enhancements – URL retrieval.

MO71

You can either set the MQCCDTURL environment variable and the whole MO71 application will take note of it, or you can set it individually for specific locations by providing the CCDT URL in the location dialog. Open the Location, ensure the Client checkbox is ticked which enables two things, the Configure button – which is for defining your channel definition manually through the MQCNO, and the CCDT URL entry field, which is where you can put the URL of your hosted CCDT file. You don’t need both of course, and MQ defines a precedence order of which is used if you do specify both.

MO71 Location Dialog showing CCDT URL field in use

Specify your CCDT URL in the MO71 Location Dialog.
Please note, the URL shown is for demonstration purposes only. There is no CCDT at the shown URL!

MQSCX

As with MO71, you can either set the MQCCDTURL environment variable and the whole MQSCX application will take note of it, or you can set it individually for specific locations by providing the ccdturl() on the =conn command.

MQSCX Extended MQSC Program – Version 9.0.0

Licenced to Paul Clarke

Licence Location: Head Quarters

> =conn qm(MQ900) client ccdturl(http://www.mqgem.com/MQGEM.TAB)

MQSCX Extended MQSC Program – Version 9.0.0

Licenced to Paul Clarke

Licence Location: Head Quarters

[14:05:31] =conn qm(MQ900) client ccdturl(http://www.mqgem.com/MQ

Connected to ‘MQ900’

MQ900>


If this feature interests you and you’d like to try it out for yourself on either of these products, and you are not currently a licence holder, you may email support@mqgem.com to request a trial licence.

MO71 – AMS Policy Commands

MQGem recently delivered a new version of MO71 that supports the new IBM MQ V9 release. As well as support for the new command level, there were a number of other features in this new version of MO71. One of those new features was the inclusion of the Advanced Message Security (AMS) policy commands.

AMS policy commands allow you to create policies for the protection of messages on your MQ queues. You can define the following types of policies:-

  • Integrity Policy
    To quote Knowledge Center,

    Integrity protection is provided by digital signing, which provides assurance on who created the message, and that the message has not been altered or tampered with.

    An integrity policy has a signature algorithm, but no encryption algorithm.

  • Privacy Policy
    To quote Knowledge Center,

    Privacy protection is provided by a combination of digital signing and encryption.

    A privacy policy has both a signature algorithm and an encryption algorithm.

  • Confidentiality Policy
    New in IBM MQ V9, to quote Knowledge Center,

    Confidentiality protection is provided by encryption only.

    A confidentiality policy has no signature algorithm, but does have a encryption algorithm. The Key Reuse feature is applicable to this type of policy. Jon Rumsey has a great write-up of this new IBM MQ V9 features on the MQDev blog, MQ V9 Fast encrypted messages with MQ – Introducing AMS Confidentiality Policies.

MO71 Protection Policies Menu

Work with AMS Protection Policies in MO71

If your queue manager is not yet at V9, you can use this latest version of MO71 to manage your Integrity and Privacy policies on your pre-V9 Distributed Queue Manager.

You’ll find the Protection Policy dialogs along with your other security commands.

You can list your policies, amend and delete them, and create new ones through the familiar MO71 dialogs. You can also export them as you can any other queue manager configuration, and filter them using MO71’s powerful filter capabilities.

MO71 Protection Policies Dialog

Use MO71 to display and manage your Integrity, Privacy and Confidentiality Policies


If this feature interests you and you’d like to try it out for yourself, you can download MO71 from the MQGem website and if you don’t currently have a licence, you may email support@mqgem.com to request a trial licence.

Changing multiple objects at once

MQGem recently delivered a new version of MO71 that supports the new IBM MQ V9 release. As well as support for the new command level, there were a number of other features in this new version of MO71. One of those new features was a customer request for a way to alter multiple objects at once when those objects reside on different queue managers.

For a long time, MO71 has been able to let you alter a number of objects at once when those objects were hosted on the same queue manager. For example, imagine you have an application that uses a number of queues, and recently that application has made a change so that the messages it uses have got larger than the original MAXMSGL defined on its queues. You can bring up a list dialog in MO71 and select all the queues that need to be changed:-

MO71 Queue List Selection

Select the queues you wish to change from the list dialog

Then open the definition with the context menu Open…, and you will see that MO71 presents you with a single dialog that shows all your selected queue names.

MO71 Queue Dialog Multiple Names

When changing multiple objects, MO71 object dialog shows all the names like this

Find the attribute you want to change, in this example the Max Msg Length, and provide the new value and then click on Update. MO71 always only sends up the values that you change. It doesn’t send up all the attributes on an ALTER command. So if you only change the Max Msg Length to 60000, then an alter command will be sent to each queue thus:-

ALTER QLOCAL(q-name) MAXMSGL(60000)

and all other attributes will remain as they were. For example, all the descriptions of my queues were different and they stay as they were.

Objects on Multiple Queue Managers

In recent versions of MO71, a feature was added that allows you to view multiple queue managers’ objects in one list dialog. In this most recent version of MO71, selecting and changing multiple objects from this dialog where those objects are owned by multiple queue managers, now brings up the same dialog as shown above – just one dialog – and lists all the queue names. There is one important difference in this mode – the queue names are fully qualified with their queue manager name as you can see in the screenshot below.

Imagine you needed to make a change to all your dead-letter queues around your estate. Now you can select them all in a Multi QMgr list and make the change in a matter of a few clicks and keystrokes.

MO71 Queue List DLQ

A Multi-QMgr queue list from where you can launch a change to objects

In this case, when you Open… the definition dialog up, you can see that the queue names are fully qualified with their owning queue manager.

MO71 Multiple DLQ Change

Multiple Objects on Multiple QMgrs – names fully qualified

Imagine how easy it can now be to make wide-reaching changes to attributes on your MQ object definitions.


If this feature interests you and you’d like to try it out for yourself, you can download MO71 from the MQGem website and if you don’t currently have a licence, you may email support@mqgem.com to request a trial licence.

View Buffer Pool and Pageset Usage via MO71

MQGem recently delivered a new version of MO71 that supports the new IBM MQ V9 release. As well as support for the new command level, there were a number of other features in this new version of MO71. One of those new features was a customer request for a way to view Buffer Pool and Pageset Usage.

Pageset Usage

You’ve always been able to see this through the MQSC window (which is your fallback for any command that MO71 doesn’t have a specific menu or dialog for), which would show you a display something like this:-

CSQI010I M901 Page set usage ...                                      
  Page Buffer     Total    Unused  Persistent  NonPersist Expansion   
   set   pool     pages     pages  data pages  data pages        count
_    0      0      1078      1042          36           0 USER       0
_    1      0      1078      1059          19           0 USER       0
_    2      1      1078       897         181           0 USER       0
_    3      2      1078       976           0         102 USER       0
_    4      3      1078      1056          17           5 USER       0
_   25      3      1078      1078           0           0 USER       0
 End of page set report

In the latest version of MO71 you can now view this same data in a standard MO71 dialog.

MO71 Pageset List

View Pageset Usage in an MO71 List dialog

This means that you have all the usual manipulation capabilities at your fingertips. For example, you can sort any of the columns simply by clicking on the title; you can rearrange the order of the columns, or exclude columns that you are not interested in; you can export the data in CSV format to import into your favourite spreadsheet or graphing program; and you can write filters to work with the data and colour rows that meet a certain criteria.

Here’s one such example of how you might want to manipulate this data just to give you an idea. You can write filters in MO71 to make a new column with a calculation of your own based on the other data available.

Here’s a filter that adds a new column (the ‘#’ character causes the new column) containing a floating point variable (the ‘@@’ makes the variable a floating point number, where a single ‘@’ would be an integer) which is the percentage of the ‘Total Pages’ that are ‘Persistent Pages’. You can call the variable anything you like and it’s name will become the column heading. N.B. The filter is a boolean expression, so to ensure every row is still shown, we finish the expression with “1”.

@@PercentPsist# := PSISTPG*100/TOTALPG; 1

You can sort your new column from within the filter (or by clicking on the heading just as with any other column).

sortd(@@PercentPsist# := PSISTPG*100/TOTALPG); 1

You can go further still and colour the rows that meet a certain criteria, for example, any Pageset with more than 10% of persistent pages.

sortd(@@PercentPsist# := PSISTPG*100/TOTALPG); bg(@@PercentPsist# >10,red); 1
MO71 Pageset List Filtered

MO71 Pageset List manipulated with a Filter

Buffer Pool Usage

As with Pageset Usage, the same MQSC command DISPLAY USAGE also shows you the Buffer pool attributes. While issuing the command through MQSC would report both tables to you, in MO71, each set of information is in a separate table, since the columns are of course different for each set of information.

CSQI065I M901 Buffer pool attributes ...                              
  Buffer  Available  Stealable   Stealable  Page      Location        
    pool    buffers    buffers  percentage  class                     
_      0       1000        963          96  4KB       BELOW           
_      1       1000        821          82  4KB       BELOW           
_      2       1000        894          89  4KB       BELOW           
_      3       1000        782          78  4KB       BELOW           
 End of buffer pool attributes

So the above information can also be seen, and manipulated, in an MO71 list dialog.

MO71 Buffer Pool List

Viewing the Buffer Pool usage in MO71

Note that this feature is available for any version of Queue Manager – it is not a IBM MQ V9 feature. If you are a current MO71 licence holder, you can simply download the new version of MO71 and start using it. If you’re not a current licence holder, and you’d like to try out MO71, please email support@mqgem.com to request a trial licence.