Versions Compared

Key

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

Table of Contents

...

Property NameDefault ValueDescription

TransportLayer.MQAdaptor.Description

MQ Transport Adapter DLLDescription of the transport adapter.

TransportLayer.MQAdaptor.DllName

bin/MQTAAddin.dllPath to the transport adapter module. In case this parameter is not specified, the TransportLayer.MQAdaptor.AdapterId is applied to define the adapter's library by ID.

TransportLayer.MQAdaptor.AdapterId


Info

This parameter is applicable since FIXEdge C++ 6.14.0 version.

The parameter to define the adapter's library by ID. In case this parameter is not specified or TransportLayer.MQAdaptor.DllName parameter is specified too, the TransportLayer.MQAdaptor.DllName is applied.

Required value: MQ

TransportLayer.MQAdaptor.TimeIntervalBeforeReconnect

1000Time interval in milliseconds between reconnect attempts.

TransportLayer.MQAdaptor.StorageDirectory

FixEdge1/logRequired. Logging directory for storage of outgoing messages.

TransportLayer.MQAdaptor.BufferSizeForMessage

65536Message buffer size. The max value is 4194304. 0 means a default value 64 * 1024.

TransportLayer.MQAdaptor.MQ_HOSTNAME

localhostMS Series Server hostname.

TransportLayer.MQAdaptor.MQ_PORT

1414MS Series Server port.

TransportLayer.MQAdaptor.MQ_MANAGER_NAME

TestMQMS Series manager name.

TransportLayer.MQAdaptor.MQ_CHANNEL_NAME

TestConnectionMS Series Channel name.

TransportLayer.MQAdaptor.MQ_CCSID

437MS 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.SslCipherSpecification

TRIPLE_DES_SHA_USSSL CipherSpec name (SSLCIPH), required to use SSL, e.g. TRIPLE_DES_SHA_US.

TransportLayer.MQAdaptor.SslClientAuthentication

falseRemote peer authentication (SSLCAUTH).

TransportLayer.MQAdaptor.SslPeerName

CN=QMGR.*, OU=IBM, OU=WEBSPHERERemote peer DN filter (SSLPEER).

TransportLayer.MQAdaptor.WaitIntervalForGet

1000Time interval in milliseconds to wait between polling messages on MQ Series Server.

TransportLayer.MQAdaptor.NumAttemptReconnect

10The number of reconnect attempts to the MQ Series Server.

TransportLayer.MQAdaptor.SessionNumber

1The number of sessions with MQ Series. Each session is a set of MQ Series queues.

TransportLayer.MQAdaptor.Session.<SessionNumber>.ClientID

MQClientMQ session ID.

TransportLayer.MQAdapter.Session.<SessionNumber>.FIXVersion

FIX44

In every session, FIX messages use a particular version of the FIX protocol. Use this parameter to set the version of the FIX protocol for a given session.

Valid values:
FIX40, FIX41, FIX42, FIX43, FIX44, FIX50, FIX50SP1, FIX50SP2.

TransportLayer.MQAdaptor.Session.<SessionNumber>.SmartXMLProcessor

trueEnables mode of processing XML/FIXML messages:
  • For outgoing FIX XML messages (MsgType = n) adapter extracts XML data and then sends data to the MQ client.
  • For incoming XML/FIXML raw data IBM MQ TA wraps data into a FIX XML message (MsgType = n) and then routes the message to FIXEdge C++.

TransportLayer.MQAdaptor.Session.<SessionNumber>.ToClientQueue

MQClient_toThe name for the Queue dedicated for messages coming from clients to MQ via FIXEdge C++.

TransportLayer.MQAdaptor.Session.<SessionNumber>.FromClientQueue

MQClient_fromThe name for the Queue dedicated for messages coming from MQ to clients via FIXEdge C++.

TransportLayer.MQAdaptor.Session.<SessionNumber>.ErrorQueue

MQClient_errorThe name for the Queue dedicated for messages, which cannot be handled because of errors.

TransportLayer.MQAdaptor.Session.<SessionNumber>.SenderID

-Optional. SenderCompID (Tag = 49) in the received message is set to the property value.

TransportLayer.MQAdaptor.Session.<SessionNumber>.TargetID

-Optional. TargetCompID (Tag = 56) in the received message is set to the property value.

TransportLayer.MQAdaptor.Session.<SessionNumber>.MessageDataFormat

MQFMT_NONE
Info

This parameter is applicable since FIXEdge C++ 6.15.1 version.

Optional. Defines the format of the message data to be sent to IBM MQ via the IBM MQ TA session. Ignored for incoming messages.

Valid values: MQFMT_NONE | MQFMT_STRING

TransportLayer.MQAdaptor.Session.<SessionNumber>.LogIncomingMessages

false
Info

This parameter is applicable since FIXEdge C++ 6.15.1 version.

Optional. Defines whether incoming messages from IBM MQ that were correctly parsed and routed to BL will be stored in the MQ-<ClientID>-Incoming_<Timestamp>.out file.

The MQ-<ClientID>-Incoming_<Timestamp>.out file will be created in the TransportLayer.MQAdaptor.StorageDirectory directory regardless of the value of the LogIncomingMessages property.

Valid values: true | false

TransportLayer.MQAdaptor.Session.<SessionNumber>.FromClientDropMessageFilter

-Optional. Defines a regular expression (perl syntax) to drop matched messages coming from MQ.

TransportLayer.MQAdaptor.Session.<SessionNumber>.SmartXMLProcessorFromClientMessageFilter

-Optional. Defines a regular expression (perl syntax) to apply SmartXMLProcessor to matched messages coming from MQ. Overrides default filter: case insensitive "<\?xml version.*|<FIXML.*"

...

  1. Configure sessions in FIXEdge.properties

    Code Block
    titleFIXEdge.properties
    #------------------------------------------------------------
    # FIX Layer Section
    #------------------------------------------------------------
     
    FixLayer.FixEngine.Sessions = SENDER, RECEIVER
     
    FixLayer.FixEngine.Session.SENDER.Version = FIX44
    FixLayer.FixEngine.Session.SENDER.StorageType = persistentMM
    FixLayer.FixEngine.Session.SENDER.Role = Acceptor
    FixLayer.FixEngine.Session.SENDER.SenderCompID = FIXEDGE
    FixLayer.FixEngine.Session.SENDER.TargetCompID = SENDER
    FixLayer.FixEngine.Session.SENDER.EncryptMethod = 0
    FixLayer.FixEngine.Session.SENDER.InSeqNum = 0
    FixLayer.FixEngine.Session.SENDER.OutSeqNum = 0
    FixLayer.FixEngine.Session.SENDER.Description = FIX session for test mq sender
    FixLayer.FixEngine.Session.SENDER.StartTime = 08:00
    FixLayer.FixEngine.Session.SENDER.TerminateTime = 23:59
    FixLayer.FixEngine.Session.SENDER.RecreateOnLogout = true
    FixLayer.FixEngine.Session.SENDER.IntradayLogoutTolerance = true
    FixLayer.FixEngine.Session.SENDER.ForceSeqNumReset = false
    FixLayer.FixEngine.Session.SENDER.SocketPriority = EVEN
    FixLayer.FixEngine.Session.SENDER.HandleSeqNumAtLogon = false
     
    FixLayer.FixEngine.Session.RECEIVER.Version = FIX44
    FixLayer.FixEngine.Session.RECEIVER.StorageType = persistentMM
    FixLayer.FixEngine.Session.RECEIVER.Role = Acceptor
    FixLayer.FixEngine.Session.RECEIVER.SenderCompID = FIXEDGE
    FixLayer.FixEngine.Session.RECEIVER.TargetCompID = RECEIVER
    FixLayer.FixEngine.Session.RECEIVER.EncryptMethod = 0
    FixLayer.FixEngine.Session.RECEIVER.InSeqNum = 0
    FixLayer.FixEngine.Session.RECEIVER.OutSeqNum = 0
    FixLayer.FixEngine.Session.RECEIVER.Description = FIX session for test mq receiver
    FixLayer.FixEngine.Session.RECEIVER.StartTime = 08:00
    FixLayer.FixEngine.Session.RECEIVER.TerminateTime = 23:59
    FixLayer.FixEngine.Session.RECEIVER.RecreateOnLogout = true
    FixLayer.FixEngine.Session.RECEIVER.IntradayLogoutTolerance = true
    FixLayer.FixEngine.Session.RECEIVER.ForceSeqNumReset = false
    FixLayer.FixEngine.Session.RECEIVER.SocketPriority = EVEN
    FixLayer.FixEngine.Session.RECEIVER.HandleSeqNumAtLogon = false
  2. Configure IBM MQ Adapter

    Code Block
    titleFIXEdge.properties
    #------------------------------------------------------------
    # Transport Layer Section
    #------------------------------------------------------------
     
    #Comma separated list of identifiers of Transport Adapters should be loaded.
    TransportLayer.TransportAdapters = TransportLayer.MQAdaptor
     
    #-------------------------------------------------------------------------
    # MQ Adaptor configuration
    #-------------------------------------------------------------------------
     
    TransportLayer.MQAdaptor.Description = MQ Transport Adaptor DLL
    TransportLayer.MQAdaptor.Type = DLL
     
    TransportLayer.MQAdaptor.DllName = bin/MQTAAddin-MD-x64.dll
    TransportLayer.MQAdaptor.TimeIntervalBeforeReconnect = 1000
    TransportLayer.MQAdaptor.BufferSizeForMessage = 65536
    TransportLayer.MQAdaptor.MQ_HOSTNAME = ecsa00400539.epam.com
    TransportLayer.MQAdaptor.MQ_MANAGER_NAME = FIXEdge
    TransportLayer.MQAdaptor.MQ_PORT = 1414
    TransportLayer.MQAdaptor.MQ_CCSID = 437
    TransportLayer.MQAdaptor.MQ_CHANNEL_NAME = TestConnection
    TransportLayer.MQAdaptor.WaitIntervalForGet = 1000
    TransportLayer.MQAdaptor.NumAttemptReconnect = 10  
    TransportLayer.MQAdaptor.StorageDirectory = FIXEdge1/log
    TransportLayer.MQAdaptor.UseTransactions = true
     
    TransportLayer.MQAdaptor.SessionNumber = 2
     
    # MQ QA session
    TransportLayer.MQAdaptor.SessionNumber = 1
    TransportLayer.MQAdaptor.Session.1.ClientID = MQHub1
    TransportLayer.MQAdaptor.Session.1.ToClientQueue = MQClient_test
    TransportLayer.MQAdaptor.Session.1.FromClientQueue =
    TransportLayer.MQAdaptor.Session.1.ErrorQueue = MQClient_error
    TransportLayer.MQAdaptor.Session.1.SmartXMLProcessor = true
    TransportLayer.MQAdaptor.Session.1.SendTransactionSize = 300
    TransportLayer.MQAdaptor.Session.1.ReceiveTransactionSize = 1
     
    TransportLayer.MQAdaptor.SessionNumber = 2
    TransportLayer.MQAdaptor.Session.2.ClientID = MQHub2
    TransportLayer.MQAdaptor.Session.2.ToClientQueue =
    TransportLayer.MQAdaptor.Session.2.FromClientQueue = MQClient_test
    TransportLayer.MQAdaptor.Session.2.ErrorQueue = MQClient_error
    TransportLayer.MQAdaptor.Session.2.SmartXMLProcessor = true
    TransportLayer.MQAdaptor.Session.2.SendTransactionSize = 300
    TransportLayer.MQAdaptor.Session.2.ReceiveTransactionSize = 1
  3. Configure BL 

    Code Block
    languagexml
    <?xml version="1.0" encoding="UTF-8"?>
    <FIXEdge>
        <BusinessLayer>
            <Rule Description="Convert ExecutionReport from FIX.4.4 to FIXML.4.4">
                <Source Name="SENDER" />
                <Action>
                    <Convert SourceProtocol="FIX.4.4" TargetProtocol="FIXML.4.4"/>
                    <Send Name="MQHub1"/>
                </Action>
            </Rule>
    		<Rule Description="Route MQ messages back to receiver and convert from FIXML.4.4 to FIX.4.4">
                <Source Name="MQHub2" />
                <Action>
    				<Convert SourceProtocol="FIXML.4.4" TargetProtocol="FIX.4.4"/>
                    <Send Name="RECEIVER"/>
                </Action>
            </Rule>
            <DefaultRule>
                <Action>
                    <DoNothing/>
                </Action>
            </DefaultRule>
        </BusinessLayer>
    </FIXEdge>
    
    
    Info

    Please refer to the Convert page for the full list of possible versions to convert.

  4. Configure Queues Managers on the IBM WebSphere server.

...

For troubleshooting, in 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.

...

FIXEdge C++ provides a Start operation for Disconnected IBM MQ TA sessions and a Stop operation for Connecting and Running IBM MQ TA sessions on request from the subscribed monitoring application.

Please refer to the Transport adaptor operations for FIXEdge C++ page for additional details about Start and Stop operations.

...

Please check configuration values for properties:

MQ Adapter can't find all its dependencies

...

Check for possible protocol versions for conversion in Convert. Make changes in BL_Config.xml to set up the correct ones:

...

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:

...

  1. Log in to the remote server where MQ Instance is running.

  2. Open cmd.

  3. Run the 'runmqsc'. Check if connected to the 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.