Versions Compared

Key

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

Table of Contents

Overview

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.

...

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.SmartXMLProcessorFromClientMessageFilter-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.*"

...

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.

Persistence MQ 

...

Transactions in MQ

FIXEdge MQ Transport Adapter has a transaction mechanism. Before sending it to MQ the messages are persisted in the files.

A path to the files can be configured with a property:

Code Block
bash
languageperl
titleFIXEdge.properties
TransportLayer.MQAdaptor.StorageDirectory = FIXEdge1/log

The stored directory is needed that unsent messages are sent to the Queue and after FIXEdge restarting, it knows what messages need to be sent.For each Queue, a separate file will be created, egfile storages are needed for keeping undelivered messages that require resending after FIXEdge restart (e.g. in case of failure).

Each file represents an MQ Session and the name of the file contains ID of the session E.g.:

MQ Adapter propertyStorage file

TransportLayer.MQAdaptor1.Session.1.ClientID = MQHub1

TransportLayer.MQAdaptor1.Session.1.ErrorQueue = errQ

MQ-MQHub1_2005211210150121.out

MQ-MQHub1-Errors_2005211210150131.out

TransportLayer.MQAdaptor1.Session.2.ClientID = MQHub2

TransportLayer.MQAdaptor1.Session.2.ErrorQueue = errQ

MQ-MQHub2_2005211210150801.out

MQ-MQHub2-Errors_2005211210150801.out

FIXEdge writes received messages to log:

...

MQ Session logs have data and corresponding transaction flag:

    • Status of the undelivered transaction: Record valid='Y'.MQ TA puts the messages
    • in the MQClient_to queue and marked that sent messages with status Record valid='N' in MQ_<ClientID>_xxx.out file. That messages are not involved in following sending to QueueStatus of the finished transaction. The message has been sent to MQ: Record valid='N'.

Examples of the log from MQ_<ClientID>_xxx.out

...

Note

Removing the storage files will cause unsent causes undelivered data will be deleted

Troubleshooting

...

TransportLayer.MQAdaptor.SslKeyRepository = C:\\B2BITS\\FIXEdge\\FixEdge1\\conf\\key
TransportLayer.MQAdaptor.SslCipherSpecification = TRIPLE_DES_SHA_US
TransportLayer.MQAdaptor.SslClientAuthentication = false
TransportLayer.MQAdaptor.SslPeerName =


Troubleshooting

Disabling IBM

...

MQ security

MQ TA has not supported the authentication in IBM MQ Server. 

It can lead to failure in MQ TA initialization with the error records in the log:

Info

"Failed to set character set. Code: ...<some code>...":

...

Make sure that QueueManager on the server-side is running and you FIXEdge are trying to set the right code character set.

If the following error message appears while accessing remote MQ manager using MQExplorer

Root cause

MQ TA has not supported the authentication в IBM MQ Server. 

Solution

The authentication should be disabled. You should perform the following steps:

  1. Login to the 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 authentication records and make sure that your account is not in the Block User List:



  8. Try again steps 5-6.

Also you can find how tdisable IBM MQ authentication on the official site.