IBM MQ and MQ Appliance News – March 2017

On Firday March 17th, IBM Hursley made available the next in the series of Continuous Delivery releases for IBM MQ V9.0 and the MQ Appliance. IBM MQ V9.0.2 is now available.

Unlike V9.0.1 there are no announcement letters.

Read about the changes in this blog post by Leif Davidsen.

Other links of interest:-

Or watch this video.


We’ll collect up any other links about the new release as we find them and put them all here.

IBM MQ Blogosphere in 2016

The IBM MQ Blogosphere is the set of blogs that cover content about the IBM MQ product. I wrote about the MQ Blogosphere at the end of 2015. This post is an update showing the new bloggers we’ve gained in 2016, and the existing bloggers that have continued to post great articles for you to read. I hope you’re following all these great blogs to get a feed of interesting an informative MQ blog posts.

No PhotoAlamelu Nagarajan started blogging in 2016. He blogs on the MQDev blog – see his posts. developerWorks Logo
MQDev Logo
Andy OwenAndy Owen dipped a toe into the MQ Blogosphere this year – see his first post on the MQDev blog. developerWorks Logo
MQDev Logo
Ant BeardsmoreAnthony Beardsmore has been blogging for several years, often about Queue Manager Clustering, but now he has turned his attention to blogging about the MQ Appliance. He blogs on the MQDev blog – see his posts. LinkedIn Logo
developerWorks Logo
MQDev Logo
Twitter Logo
Anil SahuAnil Sahu has rekindled his blogged career in 2016 after writing a little back in 2014. He blogs on the MQDev blog – see his posts. developerWorks Logo
MQDev Logo
Arthur BarrArthur Barr started blogging about MQ in 2015 and it’s great to see more posts from him in 2016. He blogs on the MQDev blog – see his posts. LinkedIn Logo
developerWorks Logo
MQDev Logo
Chris MatthewsonChris Matthewson snuck in his first blog post on MQDev right at the end of the year. Is this a sign of things to come? developerWorks Logo
MQDev Logo
Chuck MisuracaChuck Misuraca works for an MQ ISV, Perficient, and he occasionally blogs over on the Perficient blog – see his posts. LinkedIn Logo
Colin PaiceColin Paice has his own blog, Colin Paice Blog, where he writes stories about the things he discovers about MQ on z/OS. Colin has been stressing the performance and usability of MQ on z/OS for as long as I can remember, and gets changes made to the product for the benefit of its customers as a result of the things he discovers. He also makes regular appearances on the MQDev blog – see his posts. developerWorks Logo
MQDev Logo
Gwydion TudurA brand new blogger in late 2015, Gwydion Tudur has continued his blogging on MQDev throughout 2016 – see his posts. I am very happy to see him continue to post. LinkedIn Logo
developerWorks Logo
MQDev Logo
No PhotoJames Robertson snuck in his first blog post on MQDev right at the end of the year. Is this a sign of things to come? developerWorks Logo
MQDev Logo
Jamie SquibbA brand new blogger in 2016, Jamie Squibb blogs on MQDev – see his posts. Jamie has worked in the IBM MQ for z/OS area for many years, and I am glad to see he’s now also turning his hand to blogging. I hope to see many more posts from Jamie in 2017! LinkedIn Logo
developerWorks Logo
MQDev Logo
John ColgraveA new member of the IBM MQ Blogosphere in late 2015, John Colgrave has continued blogging throughout 2016 – see his posts. LinkedIn Logo
developerWorks Logo
MQDev Logo
Twitter Logo
Jon RumseyThose of you lucky enough to have met Jon Rumsey will soon realise the breadth and depth of his knowledge of the IBM MQ product is incredible. Most recently he’s majored in security, being extremely knowledgeable about Advanced Message Security and also channel security. He’s also a big fan of the IBM i platform. He’s been blogging for a couple of years now. You can read his posts over on the MQDev blog. LinkedIn Logo
developerWorks Logo
MQDev Logo
Leif DavidsenLeif Davidsen has his own blog, Leifdavidsen’s Blog, where he writes about Messaging, Connectivity and more. It’s a wordpress blog just like this one, and so is very easy to follow, and well worth it! He also comes up with some of the best titles for blog posts! LinkedIn Logo
Twitter Logo
Lyn ElkinsLyn Elkins has her own blog, Lyns Random Thoughts, where she writes about MQ on her favourite platform, z/OS. After going offline last year, Lyn’s now got her domain back up and running with a new blog. LinkedIn Logo
Mark BluemelMark Bluemel is an occasional blogger, writing on subjects he is very knowledgeable about, namely the Java and JMS support in IBM MQ – see his posts on the MQDev blog. developerWorks Logo
MQDev Logo
Mark CampbellMark Campbell snuck in his first blog post on MQDev right at the end of the year. Is this a sign of things to come? developerWorks Logo
MQDev Logo
Mark TaylorMark Taylor started blogging on MQDev in late 2015, and has written a fair few posts this year too. See his posts. You’ll also find lots of MQ videos featuring Mark. LinkedIn Logo
developerWorks Logo
MQDev Logo
Twitter Logo
No PhotoMark Whitlock dipped a toe into the MQ Blogosphere this year – see his first post on the MQDev blog. developerWorks Logo
MQDev Logo
Mark WilsonMark Wilson has been blogging since 2014, and has written on the AIM Support Blog, the IBM Messaging blog and the MQDev blog. Mark started his MQ career on the z/OS platform, but has been expanding his knowledge to cover the distributed platforms too. LinkedIn Logo
developerWorks Logo
MQDev Logo
Mark WomackMark Womack has been blogging over on the AIM Support Blog for a number of years, always with a perspective to help MQ customers, his ‘tracking technical trends’ posts are always interesting – see his posts. LinkedIn Logo
developerWorks Logo
Matt LemingMatt Leming has been blogging about MQ since 2014. He writes about the MQ on z/OS product over on the MQDev blog – see his posts. LinkedIn Logo
developerWorks Logo
MQDev Logo
Matt WhiteheadMatt Whitehead has been blogging for a year or two now. He writes about MQLight and Bluemix, over on the MQDev blog – see his posts. LinkedIn Logo
developerWorks Logo
MQDev Logo
Twitter Logo
Mayur RajaMayur Raja has worked on IBM MQ for z/OS for many years and is a very experienced z/OS developer. He has started blogging about MQ this year. He blogs on the MQDev blog – see his posts. developerWorks Logo
MQDev Logo
Twitter Logo
Miguel RodriguezMiguel Rodriguez works in IBM in the L2 Service team for IBM MQ, and he blogs over on the AIM Support Blog – see his posts. developerWorks Logo
Morag HughsonMorag started her blogging career in IBM. After leaving IBM she joined MQGem Software, an MQ ISV that produces tools to assist with your MQ system, and she now blogs on the MQGem Software blog, and also over on the IBM MiddleWare User Community. You’ll also see her regularly answering questions on StackOverflow. LinkedIn Logo
developerWorks Logo
Twitter Logo
Nathan WilsonNathan Wilson works for an MQ ISV, W3Partnership, and he occasionally blogs over on the W3Partnership blog – see his posts. LinkedIn Logo
Twitter Logo
Paul TitheridgePaul Titheridge started blogging at the start of 2016, although he’s been a successful IBM MQ writer through many IBM Technotes in the past. He writes up problems seen in his day job in Level 3 service that are useful for all users to see. It’s a great way to get the word out about common problems. He blogs on the MQDev blog – see his posts. Paul can also be found on the IBM MQ Service YouTube channel. LinkedIn Logo
developerWorks Logo
MQDev Logo
Pete SiddallAnyone who’s met Pete Siddall, the STSM for MQ on z/OS, knows how passionate he is about the platform and the MQ product that runs on it. Pete helps MQ on z/OS customers in a million different ways, and still has found time to write the occasional blog post over on MQDev – see his posts. LinkedIn Logo
developerWorks Logo
MQDev Logo
Twitter Logo
Richard PilotHaving started his blogging career in 2015, Richard Pilot continued with a few posts this year too – see his posts. Looking forward to more in 2017! LinkedIn Logo
developerWorks Logo
MQDev Logo
Twitter Logo
Rob ParkerRob Parker has been blogging for a year or two now. You can read his posts over on the MQDev blog. LinkedIn Logo
developerWorks Logo
MQDev Logo
Twitter Logo
Roger LacroixRoger Lacroix has his own blog, Roger’s Blog on MQ, Java, C, etc…, where he writes about MQ as well as a variety of other subjects. Roger works for Capitalware, an MQ ISV that produces exits and tools for your MQ system, and runs the annual MQTC Conference. LinkedIn Logo
Sajina Puthalath KandySajina Puhtalath Kandy started blogging in 2016. She blogs on the MQDev blog – see her posts. LinkedIn Logo
developerWorks Logo
MQDev Logo
No PhotoSam Goulden started blogging about the MQ Appliance this year. He blogs on the MQDev blog – see his posts. developerWorks Logo
MQDev Logo
Twitter Logo
Sam MasseySam Massey works in the performance team for Distributed MQ, and has entered the MQ Blogosphere this year with a few performance related posts – see his posts on the MQDev blog. LinkedIn Logo
developerWorks Logo
MQDev Logo
ShashiShashikanth Thambrahalli has been blogging for as long as I can remember. I think he might have been one of the founding members of the MQDev blog! Shashi is passionate about the service of our product, and the go to man for .NET and XMS too. This years he’s also been blogging about MFT. See his posts on the MQDev blog. You’ll also see him regularly answering questions on StackOverflow. LinkedIn Logo
developerWorks Logo
MQDev Logo
No PhotoSimon Davitt started his blogging career in 2016 with a couple of posts on MQDev. Hope to see more in 2017. developerWorks Logo
MQDev Logo
No PhotoSridhar Ravindra started blogging in 2016. He blogs on the MQDev blog – see his posts. developerWorks Logo
MQDev Logo
Thomas LeendTom started blogging at the start of 2016, writing up problems seen in his day job in Level 3 service, that are useful for all users to see. It’s a great way to get the word out about common problems. He blogs on the MQDev blog – see his posts. Tom can also be found on the IBM MQ Service YouTube channel. LinkedIn Logo
developerWorks Logo
MQDev Logo
T.RobT.Rob Wyatt has his own blog, Store and Forward – A blog about securing and using WebSphere MQ, where he writes about MQ, and then he also writes over on the IBM MiddleWare User Community. T.Rob has looked at MQ from every angle, he’s been a customer, an IBMer and now, a consultant offering his incredible knowledge about MQ, to get your MQ system running smoothly. You’ll also see him regularly answering questions on StackOverflow. LinkedIn Logo
developerWorks Logo
Twitter Logo
Tony SharkeyTony Sharkey is an IBM MQ for z/OS Performance expert. If you’ve got any interest in MQ on z/OS, you’ve probably read at lot of Tony’s writing over the years as he’s contributed hugely to the Performance Reports you get for every release. Now he’s blogging as well. He blogs on the MQDev blog – see his posts. developerWorks Logo
MQDev Logo
Twitter Logo

It is so great to see so many IBM MQ experts taking the time to write blog posts for you all to read. If you don’t follow one or more of these blogs, you should. Clicking on the “Follow” button is easy! I look forward to reading many more blog posts in 2017, and sharing them in our Monthly Newsletter. Thanks to all our MQ bloggers!


Footnote: If you’ve blogged about IBM MQ in 2016 and you’re not in the above list, let me know in the comments and I’ll add you to the list, and your blog to our IBM MQ Resources Page if it’s not already there.

Conference Material from 2016

A popular section of last year’s round up blog post was the section containing all the conference material from the year. So this year, it’s getting a post all to itself!

There have been quite a number of events throughout 2016 that have had IBM MQ content delivered at them. I hope you were able to attend at least one. The presentation material is online for many of these events, and download links are shown below where we are aware of them.

IBM MQ and MQ Appliance November News

IBM Hursley has made some recent announcements.

Links to the announcement letters are below.

Alternatively, read about the changes in these blog posts by Leif Davidsen.

Other links of interest:-

Or watch this video.


We’ll collect up any other links about the new announcements as we find them and put them all here.

Which channels are being used?

Which ChannelIt was asked recently on the List-Server whether there was an easy way to determine which MQI channels were being used. The asker also raised an RFE to request Channel Statistics be output by the queue manager for these channels as well as the MCA channels that do currently have statistics.

While that facility would indeed help to show which channels were being used, and for what amount of time/traffic and so on, if the problem at hand is only to determine which channels are used and which are not, for example so that unused ones can be deleted, then a current facility of the queue manager is available to discover that.

The Channel Authentication (CHLAUTH) rules which block connections into the queue manager have two modes, blocking and warning. This is controlled by the WARN(YES|NO) attribute. This was briefly discussed in my blog post CHLAUTH – the back-stop rule, to alleviate any concern of initially blocking all connections into a currently working queue manager.

Now here’s another use for WARN(YES).

If you already use CHLAUTH and already have a back-stop rule that covers all channels, then you know that only those you have positive CHLAUTH rules in place for can be being used.

If you don’t already use CHLAUTH, or at least your use of it is not applied to all channels, you could put a rule very similar to the back-stop rule in place, but using warning mode, and then see which channels are being used over time.

SET CHLAUTH('*')
    TYPE(ADDRESSMAP) ADDRESS('*')
    USERSRC(NOACCESS) WARN(YES)

Alternatively, if you’re just trying to figure out if a specific channel (or channels) is actually ever used, you could make the rule specific to that channel name.

SET CHLAUTH(MORAG.SVRCONN)
    TYPE(ADDRESSMAP) ADDRESS('*')
    USERSRC(NOACCESS) WARN(YES)

Either way, to see useful output from this, you should enable channel events, and monitor for the event messages emitted by the queue manager.

ALTER QMGR CHLEV(EXCEPTION)

Here’s an example event message that would be seen by a channel called MORAG.SVRCONN connecting into the queue manager. As you can see, you are shown the channel name, connection name (i.e. the IP address where the client resides), the client side user id and the application name (in this case q.exe). All very useful for working out what it was that ran and caused this channel to be used.

[  224 bytes] Message Content
[  224 bytes] Event Header (MQCFH)
Version      :1
Command      :46 (Channel Event)
Sequence No. :1
Reason       :2578 (Channel Blocked Warning.)
Parm Count   :7
[  188 bytes] String (MQCFST)
Parameter Id :2015 (QMgr Name)
String Length:4
Value        :'MQG2'
[  164 bytes] String (MQCFST)
Parameter Id :3506 (Connection Name)
String Length:9
Value        :'127.0.0.1'
[  132 bytes] Integer (MQCFIN)
Parameter Id :1020 (Reason Qualifier)
Value        :23 [0x'17'] MQRQ_CHANNEL_BLOCKED_NOACCESS
[  116 bytes] String (MQCFST)
Parameter Id :3501 (Channel Name)
String Length:13
Value        :'MORAG.SVRCONN'
[   80 bytes] String (MQCFST)
Parameter Id :3567 (Client User Id)
String Length:5
Value        :'morag'
[   52 bytes] String (MQCFST)
Parameter Id :3024 (Appl Name)
String Length:16
Value        :'d:\nttools\q.exe'
[   16 bytes] Integer (MQCFIN)
Parameter Id :1 (Appl Type)
Value        :11 [0x'B'] MQAT_WINDOWS_NT

N.B. When trying this out for yourself, if you truly only want a logging style use of CHLAUTH and you don’t want anything else to be affected while you do this, including SYSTEM channels and remotely asserted privileged user ids, then you’ll have to first remove the default provided CHLAUTH rules.


I was prompted to write this post as a result of this list-server question.

MaxChannels vs DIS QMSTATUS CONNS

I got asked this question on twitter the other day, so I thought it would make an interesting blog post.

Let’s look at each piece of the question.

DISPLAY QMSTATUS CONNS

You can use the DISPLAY QMSTATUS command to see how many connections there are currently made into the queue manager. This is a count of the number of applications (or some queue manager processes too) that have made an MQCONN(X) to the queue manager. It is also the same number of responses you should see returned by DISPLAY CONN(*) – if you don’t want to count them, find an MQ admin tool that counts them for you. These connections might be local or client connections – both contribute to the total.

To see the local ones use command:-

DISPLAY CONN(*) ALL WHERE(CHANNEL EQ ' ')

To see the remote ones use command:-

DISPLAY CONN(*) ALL WHERE(CHANNEL NE ' ')

Client Connections and MaxChannels

So having ruled out the local connections what should you think if the number of connections coming in over a channel is more than MaxChannels? As the question asks, “Shouldn’t that be failing?”

The other thing to remember here is that, since MQ V7, one SVRCONN channel can relay several client MQCONNs over to the queue manager.

To see this take a look at the DISPLAY CHSTATUS command. There is a status attribute CURSHCNV that shows the number currently being shared over that one SVRCONN instance.

To see the number of running channels, use the command:-

DISPLAY CHSTATUS(*) CURSHCNV

The number of responses will show you how many running channel instances there are – which is the number to compare against MaxChannels. If you add up the total of all the numbers shown in CURSHCNV, this total will be less than (or equal to) the above number of channel based connections shown when you used the DISPLAY CONN command. Both queue manager channels and client channels contribute to that total.

HINT: If you want an easy way to total up all the numbers shown in CURSHCNV, try out MQSCX with this single line:-

@total=0;foreach(DISPLAY CHSTATUS(*) CURSHCNV);@total=@total+CURSHCNV;endfor;print @total

Or you could make a little import file to print out all the various numbers:-

=echo cmds(NO)
=echo resp(NO)
print 'Show all the connections into queue manager',_connqmgr
print _sep

DISPLAY QMSTATUS CONNS
print 'Total connections ',CONNS

DISPLAY CONN(*) ALL WHERE(CHANNEL EQ ' ')
print 'Local connections ',_matches

DISPLAY CONN(*) ALL WHERE(CHANNEL NE ' ')
print 'Remote connections',_matches

@total = 0
@svrcn = 0
foreach(DISPLAY CHSTATUS(*) CURSHCNV CHLTYPE)
  if (CHLTYPE = "SVRCONN")
    @svrcn = @svrcn + 1
  endif
  @total = @total + CURSHCNV
endfor
print 'Total Channel instances ',_matches
print 'QMgr Channel instances  ',_matches - @svrcn
print 'Client Channel instances',@svrcn
print 'Client connections',@total
=echo cmds(YES)
=echo resp(YES)

UPDATE: This script evolved further with the release of MQSCX V9.0.0 and the use of functions – see more in MQSCX Functions.


IBM Certified SpecialistIBM Champion 2016 Middleware

Morag Hughson
IBM Champion 2016 – Middleware
IBM Certified System Administrator – MQ V8.0
Find her on: LinkedIn: http://uk.linkedin.com/in/moraghughson Twitter: https://twitter.com/MoragHughson SlideShare: http://www.slideshare.net/moraghughson developerWorks: https://www.ibm.com/developerworks/community/profiles/html/profileView.do?userid=110000EQPN

MQCCDTURL and mqclient.ini

During the process of writing my June IBM MQ Little Gem post over on IMWUC, I learned a bit more about the CCDT URL feature in IBM MQ V9 and how it works when you use an mqclient.ini file.

Jon Rumsey has a great write-up of this feature on the MQDev Blog, MQ V9 Client Channel Table Enhancements – URL retrieval, where he indicates that the equivalent to the MQCCDTURL environment variable is to use the ChannelDefinitionDirectory attribute in the Channels stanza of mqclient.ini.

mqclient.ini file for IBM V9My new blog post has a table of all the client environment variables and their equivalents in the mqclient.ini file (an update to a post I wrote in 2014). I noticed that the attribute that Jon refers to, ChannelDefinitionDirectory, is already in use as the equivalent to the MQCHLLIB environment variable.

I know that the MQCHLLIB environment variable only specifies the path to the CCDT, whereas the MQCCDTURL environment variable specifies the whole path and file name. So I wondered whether ChannelDefinitionDirectory was really the direct equivalent.

I had previously been using the following environment variable:-

set MQCCDTURL=http://www.mqgem.com/MQGEM.TAB

so I tried out an mqclient.ini file with the following contents as a direct equivalent:-

CHANNELS:
  ChannelDefinitionDirectory=http://www.mqgem.com/MQGEM.TAB

and was rewarded by the following error in my AMQERR01.LOG:-

AMQ9795: The client channel definition could not be retrieved from
its URL, error code (16).

EXPLANATION:
The client channel definition location was specified as URL
'http://www.mqgem.com/MQGEM.TAB/AMQCLCHL.TAB', however the file could
not be retrieved from this location. 

The error returned was (16) 'HTTP response code said error'. The
protocol specific response code was (404).
ACTION:
Ensure that the URL is reachable and if necessary correct the details
provided.

404 is the standard HTTP “not found” response code, and it is not a surprise that it couldn’t find the file since it has concatenated the default AMQCLCHL.TAB file name on the end of what I provided. So it would seem that you need to use both ChannelDefinitionDirectory and ChannelDefinitionFile in the mqclient.ini file to get the equivalent behaviour to the MQCCDTURL environment variable.

With an mqclient.ini file with the following contents:-

CHANNELS:
  ChannelDefinitionDirectory=http://www.mqgem.com
  ChannelDefinitionFile=MQGEM.TAB

I was able to successfully connect.


IBM Certified SpecialistIBM Champion 2016 Middleware

Morag Hughson
IBM Champion 2016 – Middleware
IBM Certified System Administrator – MQ V8.0
Find her on: LinkedIn: http://uk.linkedin.com/in/moraghughson Twitter: https://twitter.com/MoragHughson SlideShare: http://www.slideshare.net/moraghughson developerWorks: https://www.ibm.com/developerworks/community/profiles/html/profileView.do?userid=110000EQPN