Financial Information eXchange Web Platform (QuickFix / J)
I am only a few days familiar with FIX and would appreciate some guidance below.
A trading system connected to an exchange can receive FIX messages for trading purposes and requests for market data. I am trying to build a web FIX platform using QuickFix / J that will be provided to numerous clients.
An ip and port is provided to connect to the trading system gateway, and I have already provided them with valid message tags.
I used QuickFix / J to create a local initiator and acceptor (standalone apps, not websites) to run my tests and send messages between two points (INITIATOR> ACCEPTOR and ACCEPTOR> INITIATOR) and this works fine and I got idea (more / less) how messages should work. Also I experimented to see how multiple sessions work and it works well for me. (1 acceptor - several initiators)
I am really confused when it comes to the fact that I need to go to the web application right now. My questions:
-
When connected to the provided gateway, what do I need to get started in order to send and receive FIX messages? initiator or acceptor or both? From my understanding: An initiator starts up and connects to an acceptor, so in this case the gateway will be an acceptor or not?
-
Let's say I want to expose this web platform to multiple clients and each connected client will have a dedicated session after successful login. If the acceptor is the actual server, how will it know about the details of the client's session? (SenderCompID and TargetCompID)
-
Current architecture:
- A special server for launching the trading system, in which the FIX client application will connect and send / receive messages
- The web application will create a session in the trading system and send / receive FIX messages
- Suggestions for communication between server and web application? I was thinking of using activeMQ for messaging between two points. Would this be a good idea?
I know this is too much to ask, but any opinion / suggestion would be greatly appreciated.
Thank.
Updates :
- My biggest problem with activeMQ is actually session management, and if it is possible to develop such a web application using amq to send / receive messages between client-amq-trading platform. I have not used amq and quickfix / j in depth, and I just want to be sure that it is actually possible.
- Based on the above, do you think this architecture will work fine? architecture
source to share
- Not all counterparties will trigger acceptors, but all the ones I've ever worked with (50 or so) so you (probably) don't need to trigger an acceptor.
- Typically each client has their own CompID pair provided by the counterparty, and it is these details that (uniquely) identify the client. Typically, you create a separate connection for each client.
- It depends on what volume you expect to trade, but using activeMQ sounds viable. I would think that unless you are dealing with high frequency trading or multiple clients, you need a separate dedicated server. In general, I used proprietary messaging layers to communicate between our clients and servers, but it had more to do with the companies I worked for than these systems, which are inappropriate.
Disclaimer: My experience is in C # and C ++ FIX development, so I don't really know active MQ, but based on comparisons, it seems fine.
source to share