Lots of camel-fix questions from me lately...
I am not an experienced user of Camel but it seems perfect for what I want to do. I want to use QuickFix/J for Fix communication (in this case receiving drop-copies from a market place for settlement purposes) and then trigger a classical integration flow with transformation and routing of the received messages.
With help from answers to my prior post here, I'v gotten the camel-fix component up-and-running. However I still have a couple of problems/questions:
1. By specifying "from("fixserver:executor.cfg").to("log:quickfix");", I manage to start the QuickFix/J engine using the configuration file "executor.cfg". However, the received messages are not forwarded further in the flow (in this case to the log component). When I look in the source code for camel-fix I noticed that the only thing being done in the "fromApp()" callback in the QuickFix/J application is to log the message. But in the "toApp()" callback the message is forwarded to the "onMessage()" method for further processing. To me it seems it should be the other way around. If I move the call to "onMessage()" from "toApp()" to "fromApp()", things starts to happen. Can someone verify if this is a bug or if I've just misunderstood?
2. It seems like camel-fix is depending an code that is not open sourced. Specifically, the FixConverter class depends heavily on biz.c24.io.fix42.NewOrderSingleElement which I don't seem to be able to download from anywhere. I get the impression that it is part of Artix Data Services that is a commercial product. Can someone clarify whether camel-fix will be an open source available Camel integration or if it will be a commercial product? I understand if advanced type conversion and data services will not be open sourced, but the basic type conversion and Camel integration I think is a good candidate for open source. I'd rather use an integration from FUSE than to roll my own.
3. Assuming that camel-fix will be freely available, I still need a little more hints on how to use it. It seems like the actual camel integration is to let the infrastructure create a FixEndpoint that the QuickFix application holds on to. It can then be used to communicate with Camel. I think a good approach would be for the user (me) to subclass the CamelApplication class in order to get my specific behaviour (especially my own initializing in order to use my persistent store etc) but being able to use the provided FixEndpoint to talk to Camel. Is this a good idea or did you have another usage scenario in mind? If it's a good idea, what is the best way for me to accomplish that?