Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

Overview

IBM MQ Transport Adaptor (hereafter MQ TA) is an add-in for FIXServer that allows clients to communicate with FIXServer over IBM MQSeries middleware. The document contains full instructions how to install MQ TA for testing.

Description

MQ TA is responsible for:

  • Establishing and maintaining sessions with MQ Series Server to communicate with Clients
  • Transmitting messages to its clients
  • Delivering messages from clients
  • Facilitating monitoring and administration

Image Removed

Monitoring and Administration

MQ TA provides the following monitoring information:

  • Number of messages sent
  • Number of messages received
  • Time the last message was sent/received for each client
  • List of clients

Integration Guide

Installation MQ Adaptor to FixEdge

Normally MQ adaptor is distributed as a zip-archive with the name MQAdaptor-xx.zip, where xx stands for MQ adaptor version. The distribution package consists of:

FileDescription

BIN\MQTAAddin-xx.dll or

BIN\MQTAAddin.so

MQ Transport Adaptor dynamic library for Windowsor MQ Transport Adaptor shared library for Linux
DOC\MQTA_InstallationGuide.pdfMQ Transport Adaptor - Installation Guide. This document
DOC\VersionHistory.txtMQ Transport Adaptor Version History
DOC\FIXEdge.propertiesSample FIX Edge configuration file.

To install MQ adaptor:

  • IBM MQ Client libraries must be installed on the FIX Edge machine where MQ Adaptor is ran. Third-party libraries are not incuded into TA package. They can be downloaded from  here.
  • Unpack the package and copy MQTAAddin-xx.dll/ MQTAAddin-xx.so  into the FIX Edge /bin folder. Configure adaptor according to the instructions below.
  • Restart FIX Edge.

Configuration

IBM MQ Transport Adaptor can be configured using FIXICC or directly by editing the FIXEdge.properties file of the correspondent FIX Edge instance. All properties to be set up are described in the table below. You can also use FIXEdge.properties file from the package as an example.

Make sure that configuration of the adaptor correlates with the MQ Series Server parameters.

...

Table of Contents

Overview

IBM MQ Transport Adaptor (hereafter MQ TA) is an add-in for FIXServer that allows clients to communicate with FIXServer over IBM MQSeries middleware. The document contains full instructions how to install MQ TA for testing.

Description

MQ TA is responsible for:

  • Establishing and maintaining sessions with MQ Series Server to communicate with Clients
  • Transmitting messages to its clients
  • Delivering messages from clients
  • Facilitating monitoring and administration

Image Added

Monitoring and Administration

MQ TA provides the following monitoring information:

  • Number of messages sent
  • Number of messages received
  • Time the last message was sent/received for each client
  • List of clients

Integration Guide

Installation MQ Adaptor to FixEdge

Normally MQ adaptor is distributed as a zip-archive with the name MQAdaptor-xx.zip, where xx stands for MQ adaptor version. The distribution package consists of:

FileDescription

BIN\MQTAAddin-xx.dll or

BIN\MQTAAddin.so

MQ Transport Adaptor dynamic library for Windowsor MQ Transport Adaptor shared library for Linux
DOC\MQTA_InstallationGuide.pdfMQ Transport Adaptor - Installation Guide. This document
DOC\VersionHistory.txtMQ Transport Adaptor Version History
DOC\FIXEdge.propertiesSample FIX Edge configuration file.

To install MQ adaptor:

  • IBM MQ Client libraries must be installed on the FIX Edge machine where MQ Adaptor is ran. Third-party libraries are not incuded into TA package. They can be downloaded from  here.
  • Unpack the package and copy MQTAAddin-xx.dll/ MQTAAddin-xx.so  into the FIX Edge /bin folder. Configure adaptor according to the instructions below.
  • Restart FIX Edge.

Configuration

IBM MQ Transport Adaptor can be configured using FIXICC or directly by editing the FIXEdge.properties file of the correspondent FIX Edge instance. All properties to be set up are described in the table below. You can also use FIXEdge.properties file from the package as an example.

Make sure that configuration of the adaptor correlates with the MQ Series Server parameters.

ClientIDThe name for Queue dedicated for message, which cannot be handled because of error.
Property NameDefault ValueDescription
TransportLayer.MQAdaptor.DescriptionMQ Transport Adaptor DLLDescription of the transport adaptor
TransportLayer.MQAdaptor.DllNamebin/MQTAAddin.dllPath to the transport adaptor module
TransportLayer.MQAdaptor.TimeIntervalBeforeReconnect1000Time interval in milliseconds between reconnect attempts
TransportLayer.MQAdaptor.StorageDirectoryFixEdge1/logLogging directory for storage of outgoing messages. Required.
TransportLayer.MQAdaptor.BufferSizeForMessage65536Message buffer size. Max value is 4194304. 0 means a default value 64 * 1024
TransportLayer.MQAdaptor.MQ_HOSTNAMElocalhostMS Series Server host name
TransportLayer.MQAdaptor.MQ_PORT1414MS Series Server port
TransportLayer.MQAdaptor.MQ_MANAGER_NAMETestMQMS Series manager name
TransportLayer.MQAdaptor.MQ_CHANNEL_NAMETestConnectionMS Series Channel name
TransportLayer.MQAdaptor.MQ_CCSID437MS Series Server CCSID. The coded character set identifier to use with the WebSphere MQ queue
TransportLayer.MQAdaptor.SslKeyRepository/var/mqm/ssl/keyPath to SSL certificate storage file without extension (SCKR,MQSSLKEYR) e.g. /var/mqm/ssl/key or C:\\Program Files\\IBM\\WebSphere MQ\\ssl\\key
TransportLayer.MQAdaptor.SslCipherSpecificationTRIPLE_DES_SHA_USSSL CipherSpec name (SSLCIPH), required to use SSL, e.g. TRIPLE_DES_SHA_US
TransportLayer.MQAdaptor.SslClientAuthenticationfalseRemote peer authentication (SSLCAUTH)
TransportLayer.MQAdaptor.SslPeerNameCN=QMGR.*, OU=IBM, OU=WEBSPHERERemote peer DN filter(SSLPEER)
TransportLayer.MQAdaptor.WaitIntervalForGet1000Time interval in milliseconds to wait between polling message on MQ Series Server
TransportLayer.MQAdaptor.NumAttemptReconnect10Number of reconnect attempts to MQ Series Server
TransportLayer.MQAdaptor.SessionNumber1Number of sessions with MQ Series. Each session is a set of MQ Series queues.
TransportLayer.MQAdaptor.Session.1.ClientIDMQClientMQ session ID.
TransportLayer.MQAdaptor.Session.1.SmartXMLProcessortrueEnables mode of processing XML/FIXML messages:
  • For outgoing FIX XML message (MsgType = n) adaptor extracts XML data then sends data to MQ client.
  • For incoming XML/FIXML raw data adaptor wraps data into FIX XML message (MsgType = n) then routes message to FIX Edge.
TransportLayer.MQAdaptor.Session.1.ToClientQueueMQClient_toThe name for Queue, dedicated for message coming from client to MQ via FIX Edge
TransportLayer.MQAdaptor.Session.1.FromClientQueueMQClient_fromThe name for Queue, dedicated for message coming from MQ to client via FIX Edge
TransportLayer.MQAdaptor.Session.1.ErrorQueueMQClient_errorThe name for Queue dedicated for message, which cannot be handled because of error.
TransportLayer.MQAdaptor.Session.1.SenderID-Not required. SenderCompID (Tag = 49) in the received message is set to the property value.
TransportLayer.MQAdaptor.Session.1.TargetID-Not required. TargetCompID (Tag = 56) in the received message is set to the property value.
TransportLayer.MQAdaptor.Session.1.FromClientDropMessageFilter-Not required. Defines a regular expression (perl syntax) to drop matched messages coming from MQ.
TransportLayer.MQAdaptor.Session.1.SmartXMLProcessorFromClientMessageFilterMQClientMQ session ID.
TransportLayer.MQAdaptor.Session.1.SmartXMLProcessortrueEnables mode of processing XML/FIXML messages:
  • For outgoing FIX XML message (MsgType = n) adaptor extracts XML data then sends data to MQ client.
  • For incoming XML/FIXML raw data adaptor wraps data into FIX XML message (MsgType = n) then routes message to FIX Edge.
TransportLayer.MQAdaptor.Session.1.ToClientQueueMQClient_toThe name for Queue, dedicated for message coming from client to MQ via FIX Edge
TransportLayer.MQAdaptor.Session.1.FromClientQueueMQClient_fromThe name for Queue, dedicated for message coming from MQ to client via FIX Edge
TransportLayer.MQAdaptor.Session.1.ErrorQueueMQClient_error-Not required. Defines a regular expression (perl syntax) to apply SmartXMLProcessor to matched messages coming from MQ. Overrides default filter: case insensitive "<\?xml version.*|<FIXML.*"

Error queue

An error queue is a local queue to which error messages can be sent by the WebSphere MQ connector when a message operation fails. For target queues, the error queue acts as a backup option for the target queue when messages cannot be written to the target queue

As per the solution diagram above, there are the following reasons for messages sent to the error queue:

  1. FIXEdge can't produce data to MQ. (e.g. due to there is no connection to MQ server.)
  2. FIXEdge can't consume data from MQ server.
  3. Other various MQ errors. (E.g. due to configuration issues, or message content issues)

FIXEdge can't produce data to MQ

The reason for getting messages to ErrorQueue is diverse, for each is necessary individual analysis of the logs.

To process messages from the queue, it's recommended:

  • Use different Error Queues per session. It would be easier to troubleshoot issues if the session would have own error queue.
    It can be configured with FIXEdge property:

    Code Block
    languageperl
    TransportLayer.MQAdaptor.Session.1.

...

  • ErrorQueue = MQClient_error_1
    
    TransportLayer.MQAdaptor.Session.

...

Error queue

An error queue is a local queue to which error messages can be sent by the WebSphere MQ connector when a message operation fails. For target queues, the error queue acts as a backup option for the target queue when messages cannot be written to the target queue

As per the solution diagram above, there are the following reasons for messages sent to the error queue:

  1. FIXEdge can't produce data to MQ. (e.g. due to there is no connection to MQ server.)
  2. FIXEdge can't consume data from MQ server.
  3. Other various MQ errors. (E.g. due to configuration issues, or message content issues)

FIXEdge can't produce data to MQ

The reason for getting messages to ErrorQueue is diverse, for each is necessary individual analysis of the logs.

To process messages from the queue, it's recommended:

  • Use different Error Queues per session. It would be easier to troubleshoot issues if the session would have own error queue.
    It can be configured with FIXEdge property:

    Code Block
    languageperl
    TransportLayer.MQAdaptor.Session.1.ErrorQueue = MQClient_error_1
    
    TransportLayer.MQAdaptor.Session.2.ErrorQueue = MQClient_error_2
  • Use dmpmqmsg tool for moving messages from the error queue to producer on. So all messages from the error queue should be replayed.

    Code Block
    languageperl
    dmpmqmsg -m MQClient -I MQClient_error -o MQClient_error_2 -s FIXEdge

    -m QueueManagerName
    -I Input queue name
    -o Output queue name
    -s Message content, as all messages have senderCompId and TargetCompId it can be used for filtering.

FIXEdge can't consume data from MQ server and other various MQ errors

These cases are rare ones if there were no configuration changes. 

Issues not causing messages in the error queue

There are cases that do not lead to the messages in Error queue.

E.g.: FIXEdge can't push the data to the FIX connection because the destination is down.

...

  • 2.ErrorQueue = MQClient_error_2
  • Use dmpmqmsg tool for moving messages from the error queue to producer on. So all messages from the error queue should be replayed.

    Code Block
    languageperl
    dmpmqmsg -m MQClient -I MQClient_error -o MQClient_error_2 -s FIXEdge

    -m QueueManagerName
    -I Input queue name
    -o Output queue name
    -s Message content, as all messages have senderCompId and TargetCompId it can be used for filtering.

FIXEdge can't consume data from MQ server and other various MQ errors

These cases are rare ones if there were no configuration changes. 

Issues not causing messages in the error queue

There are cases that do not lead to the messages in Error queue.

E.g.: FIXEdge can't push the data to the FIX connection because the destination is down.

For troubleshooting, this case it's recommended to upgrade FIXEdge to version 6.9.0 with a Managed Queue feature.
It was designed for cases when messages should be pushed to the counterparty when they come back online and do not support recovery with resend requests.

Processing the messages in MQ Queue

Set property for MQAdaptor:

Code Block
languagebash
TransportLayer.MQAdaptor.StorageDirectory = FIXEdge1/log

Then *.out file for messages for Queue is created in the FIXEdge1/log folder.

FE writes received messages to log:

    • MQ TA writes the messages in MQ *.out file with status Record valid='Y'
    • MQ TA puts the messages in the MQClient_to queue and sets status Record valid='N'
Code Block
languagebash
titleMQ-MQHub1_xxx.out
<Record valid='Y' size='Ó      ' data='8=FIX.4.4 9=3259 35=AE 49=FIXClient 56=FIXEdgeMQHub1 115=STRING 128=STRING 90=1 91=D 34=169 50=STRING 142=STRING 57=STRING...10=139'/>
...
<Record valid='N' size='Ó      ' data='8=FIX.4.4 9=3259 35=AE 49=FIXClient 56=FIXEdgeMQHub1 115=STRING 128=STRING 90=1 91=D 34=208 50=STRING 142=STRING 57=STRING...10=137'/>

Troubleshooting

The message is not sent to the client with multiple MQ TA configuration

...

  1. Login to remote server where MQ Instance is running

  2. Open cmd

  3. Run 'runmqsc'. Check if connected to correct QM:

  4. Execute 'ALTER QMGR CHLAUTH(DISABLED)':

  5. Try to reestablish connection by clicking 'No' in the dialog:

  6. And Finish in the dialog:

  7. If the error is still here, look at Channel autentication records and make sure that your account is not in the Block User List:



  8. Try again steps 5-6.

Disabling IBM MQ security

MQ TA has not supported the authentication. 

Solution

Please find how tdisable IBM MQ security for this scenario by editing the properties of the sample queue manager by using IBM MQ Explorer on the official site.