Table of Contents
Table of Contents
Overview
IBM MQ Adaptor is an add-in Transport Adaptor 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 Adapter 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.
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
...
Configure FE using the following sample properties:
Code Block title FIXEdge.properties TransportLayer.TransportAdapters = TransportLayer.MQAdaptor #------------------------------------------------------------------------- # MQ Adaptor Settings #------------------------------------------------------------------------- TransportLayer.MQAdaptor.Description = MQ Transport Adaptor DLL TransportLayer.MQAdaptor.TimeIntervalBeforeReconnect = 1000 TransportLayer.MQAdaptor.DllName = bin/MQTAAddin-vc10-MD-x64.dll TransportLayer.MQAdaptor.StorageDirectory = FixEdge1/log TransportLayer.MQAdaptor.NumAttemptReconnect = -1 TransportLayer.MQAdaptor.WaitIntervalForGet = 10000 TransportLayer.MQAdaptor.BufferSizeForMessage = 65536 TransportLayer.MQAdaptor.MQ_HOSTNAME = EVUAKYISD0223.kyiv.epam.com TransportLayer.MQAdaptor.MQ_MANAGER_NAME = TestMQ TransportLayer.MQAdaptor.MQ_PORT = 1414 TransportLayer.MQAdaptor.MQ_CCSID = 437 TransportLayer.MQAdaptor.MQ_CHANNEL_NAME = TestConnection TransportLayer.MQAdaptor.SessionNumber = 1 TransportLayer.MQAdaptor.Session.1.ClientID = MQClient TransportLayer.MQAdaptor.Session.1.FromClientQueue = MQClient_from TransportLayer.MQAdaptor.Session.1.ToClientQueue = MQClient_to TransportLayer.MQAdaptor.Session.1.ErrorQueue = MQClient_error TransportLayer.MQAdaptor.Session.1.SmartXMLProcessor = false
Check if Queues are accessible:
Code Block title FixEdge.log [DEBUG] 20120718-11:41:33.609 [2840] [MQEngine] - Was created queue 'MQClient_from' [DEBUG] 20120718-11:41:33.609 [2840] [MQQueuesReader_Debug] - createClientQueue() finished [DEBUG] 20120718-11:41:33.609 [2840] [MQQueuesReader_Debug] - ClientQueue created. [DEBUG] 20120718-11:41:33.609 [2840] [MQQueuesReader_Debug] - MQQueuesReader::readFromQueuesAndPassToTL(). [DEBUG] 20120718-11:41:33.609 [2840] [MQQueuesReader_Debug] - fromClientQueue->getFirst(). [DEBUG] 20120718-11:41:38.039 [12692] [MQEngine] - Was created queue 'MQClient_to' [DEBUG] 20120718-11:41:38.251 [12692] [MQEngine] - Was created queue 'MQClient_error' [DEBUG] 20120718-11:41:38.251 [12692] [MQQueueWriter] - Queues were created for client 'MQClient' [NOTE] 20120718-11:41:38.251 [12692] [MQQueueWriter] - Restore messages for out queue 'MQClient'. [NOTE] 20120718-11:41:38.251 [12692] [MQQueueWriter] - Create storage for the: MQClient [DEBUG] 20120718-11:41:38.251 [12692] [MQQueueWriter] - Load storage. [DEBUG] 20120718-11:41:38.251 [12692] [MQQueueWriter] - Persistance storage use file: D:\Program Files\B2Bits\FIX Edge\v.5.4.1.40091\FixEdge1\log\MQ-MQClient_07180941382511.out [NOTE] 20120718-11:41:38.251 [12692] [MQQueueWriter] - Restore messages for error queue 'MQClient'. [NOTE] 20120718-11:41:38.251 [12692] [MQQueueWriter] - Create storage for the: MQClient-Errors [DEBUG] 20120718-11:41:38.251 [12692] [MQQueueWriter] - Load storage. [DEBUG] 20120718-11:41:38.252 [12692] [MQQueueWriter] - Persistance storage use file: D:\Program Files\B2Bits\FIX Edge\v.5.4.1.40091\FixEdge1\log\MQ-MQClient -Errors_07180941382511.out [DEBUG] 20120718-11:41:43.678 [2840] [MQQueueRead] - Was performed get operation on queue 'MQClient_from' with reason code :2033 [DEBUG] 20120718-11:41:43.678 [2840] [MQQueueRead] - MQQueueRead::getFirst failed to get message '' [DEBUG] 20120718-11:41:43.678 [2840] [MQQueuesReader_Debug] - MQQueuesReader::readFromQueuesAndPassToTL(). [DEBUG] 20120718-11:41:43.678 [2840] [MQQueuesReader_Debug] - fromClientQueue->getFirst().
Route message to MQ and check FE logs:
Code Block title FixEdge.log [DEBUG] 20120718-11:48:16.389 [7968] [FL_MsgTrace] - New message FIX was received from session with ID 'TROIKALSE'. Message: '8=FIX.4.49=16535=D49=LSE56=TROIKA34=250=3073757=ECL_TURQ97=Y52=20120718-09:48:16.38811=900010081=1003000321=255=TESTA54=160=20000809-18:20:3238=400040=244=3059=010=224'. [DEBUG] 20120718-11:48:16.389 [7968] [BL_Layer] - Process incoming message. [DEBUG] 20120718-11:48:16.389 [7968] [BL_RoutingTable] - There are no suitable rules were found for message with Source ID 'LSE', executing DefaultRule. [DEBUG] 20120718-11:48:16.389 [7968] [CC_Layer] - BL has processed a message. Number of client IDs for delivery :0. Number or FIX sessions for delivery :0.. Number or sources identifiers for delivery :1. Source IDs: 1. 'MQClient' [DEBUG] 20120718-11:48:16.389 [7968] [TransportLayer] - Sending message '8=FIX.4.49=16535=D49=LSE56=TROIKA34=250=3073757=ECL_TURQ97=Y52=20120718-09:48:16.38811=900010081=1003000321=255=TESTA54=160=20000809-18:20:3238=400040=244=3059=010=224' to client MQClient [DEBUG] 20120718-11:48:16.389 [7968] [MQQueueWriter] - Was put message to messageQueue. Message = (ToClientQueue, MQClient, 8=FIX.4.49=16535=D49=LSE56=TROIKA34=250=3073757=ECL_TURQ97=Y52=20120718-09:48:16.38811=900010081=1003000321=255=TESTA54=160=20000809-18:20:3238=400040=244=3059=010=224) [DEBUG] 20120718-11:48:16.389 [7968] [MQQueueWriter] - Store into the Persistance storage. [DEBUG] 20120718-11:48:16.389 [12228] [MQQueueWriter] - Was get message from MessageQueue. Message: ( toClientQueue,MQClient, 8=FIX.4.49=16535=D49=LSE56=TROIKA34=250=3073757=ECL_TURQ97=Y52=20120718-09:48:16.38811=900010081=1003000321=255=TESTA54=160=20000809-18:20:3238=400040=244=3059=010=224) [DEBUG] 20120718-11:48:16.460 [12228] [MQQueueWrite] - Was performed put operation on queue 'MQClient_to' with reason code :0. Message = '8=FIX.4.49=16535=D49=LSE56=TROIKA34=250=3073757=ECL_TURQ97=Y52=20120718-09:48:16.38811=900010081=1003000321=255=TESTA54=160=20000809-18:20:3238=400040=244=3059=010=224' [DEBUG] 20120718-11:48:16.460 [12228] [MQQueueWrite] - message was successfully sent to to queue 'MQClient_to' with reason code :0 [DEBUG] 20120718-11:48:16.460 [12228] [MQQueueWriter] - message was put to ToClient queue.Client 'MQClient'. MEssage '8=FIX.4.49=16535=D49=LSE56=TROIKA34=250=3073757=ECL_TURQ97=Y52=20120718-09:48:16.38811=900010081=1003000321=255=TESTA54=160=20000809-18:20:3238=400040=244=3059=010=224'
Troubleshootting
If MQ TA fails to initialize with record in log "Failed to set character set. Code: some code": make sure QueueManager on server side is running and you are trying to set right code character set.
...