Infinispan MessageStore Implementation Question #449
Replies: 3 comments 4 replies
-
The invariant of the fix protocol is that: The sender needs to persist the message before sending.! This is because the sender of messages 'own' the persistence in case the receiver crashes. The important requirement of the fix protocol, is that it is the senders responsibility to create persistence, which means EVERY message MUST be persisted before sending, if this invariant is broken, problems can occurs! |
Beta Was this translation helpful? Give feedback.
-
Hi @stephennimmo , thanks for the idea and sorry for the long delay in answering. I don't have any experience with Inifinispan but the store you created looks good to me. IMHO it would be good to create a new submodule (or even sub-sub-module, maybe quickfixj-store/quickfixj-infinispan). There is another issue which might be related (#459) since it also deals with moving out some storage code from core to a sub-module. W.r.t. the tests: I think it would be good to have some kind of integration tests. Thanks and cheers, |
Beta Was this translation helpful? Give feedback.
-
I think that a new capability such as this should be in a new repository and built/published independently. In some ways this is not quite as easy to maintain but avoids gradually increasing the complexity and dependencies of the "core" QFJ project. This helps with conformance to the "stable dependencies principle". This is not to say the project can't be endorsed by the QFJ project and/or be part of the quickfix-j organisation. The partly or fully independent project can also still use the quickfixj-parent as its parent pom if this is helpful. To use the capability an application need only add the optional dependency. Because this is a new capability, to aid maintainability it would be better to use a distinct package name. So I think a separate repo is better. Whether a separate organisation or not then QFJ can refer to it in documents, for example in "quickfixj.github.io" GitHub pages. |
Beta Was this translation helpful? Give feedback.
-
I have started to implement a new MessageStore implementation which uses the in-memory data grid, Infinispan (https://infinispan.org). While I have a good start, I had some questions.
As an alternative, I could create a new separate module in the project (quickfixj-infinispan) and create all the implementation/tests there OR I could just create a whole separate project externally.
Here's the branch for the implementation so far: https://github.com/stephennimmo/quickfixj/tree/infinispan-implementation
Classes are: InfinispanStoreFactory, InfinispanStore
Beta Was this translation helpful? Give feedback.
All reactions