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 Name | Default Value | Description |
TransportLayer.MQAdaptor.Description | MQ Transport Adaptor DLL | Description of the transport adaptor |
TransportLayer.MQAdaptor.DllName | bin/MQTAAddin.dll | Path to the transport adaptor module |
TransportLayer.MQAdaptor.TimeIntervalBeforeReconnect | 1000 | Time interval in milliseconds between reconnect attempts |
TransportLayer.MQAdaptor.StorageDirectory | FixEdge1/log | Logging directory for storage of outgoing messages. Required. |
TransportLayer.MQAdaptor.BufferSizeForMessage | 65536 | Message buffer size. Max value is 4194304. 0 means a default value 64 * 1024 |
TransportLayer.MQAdaptor.MQ_HOSTNAME | localhost | MS Series Server host name |
TransportLayer.MQAdaptor.MQ_PORT | 1414 | MS Series Server port |
TransportLayer.MQAdaptor.MQ_MANAGER_NAME | TestMQ | MS Series manager name |
TransportLayer.MQAdaptor.MQ_CHANNEL_NAME | TestConnection | MS Series Channel name |
TransportLayer.MQAdaptor.MQ_CCSID | 437 | MS Series Server CCSID. The coded character set identifier to use with the WebSphere MQ queue |
TransportLayer.MQAdaptor.SslKeyRepository | /var/mqm/ssl/key | Path 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.SslCipherSpecification | TRIPLE_DES_SHA_US | SSL CipherSpec name (SSLCIPH), required to use SSL, e.g. TRIPLE_DES_SHA_US |
TransportLayer.MQAdaptor.SslClientAuthentication | false | Remote peer authentication (SSLCAUTH) |
TransportLayer.MQAdaptor.SslPeerName | CN=QMGR.*, OU=IBM, OU=WEBSPHERE | Remote peer DN filter(SSLPEER) |
TransportLayer.MQAdaptor.WaitIntervalForGet | 1000 | Time interval in milliseconds to wait between polling message on MQ Series Server |
TransportLayer.MQAdaptor.NumAttemptReconnect | 10 | Number of reconnect attempts to MQ Series Server |
TransportLayer.MQAdaptor.SessionNumber | 1 | Number of sessions with MQ Series. Each session is a set of MQ Series queues. |
TransportLayer.MQAdaptor.Session.1.ClientID | MQClient | MQ session ID. |
TransportLayer.MQAdaptor.Session.1.SmartXMLProcessor | true | Enables mode of processing XML/FIXML messages:
|
TransportLayer.MQAdaptor.Session.1.ToClientQueue | MQClient_to | The name for Queue, dedicated for message coming from client to MQ via FIX Edge |
TransportLayer.MQAdaptor.Session.1.FromClientQueue | MQClient_from | The name for Queue, dedicated for message coming from MQ to client via FIX Edge |
TransportLayer.MQAdaptor.Session.1.ErrorQueue | MQClient_error | The 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 | |||||
---|---|---|---|---|---|
| |||||
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 property | Storage 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'.
- Status of the undelivered transaction:
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:
Login to the remote server where MQ Instance is running
Open cmd
Run 'runmqsc'. Check if connected to correct QM:
Execute 'ALTER QMGR CHLAUTH(DISABLED)':
Try to reestablish connection by clicking 'No' in the dialog:
And Finish in the dialog:
- If the error is still here, look at Channel authentication records and make sure that your account is not in the Block User List:
- Try again steps 5-6.
Also you can find how to disable IBM MQ authentication on the official site.