I was looking at MINA core source code and I noticed events are publish to
a ConcurrentLinkedQueue so here are my questions and suggestions:
- Does ConcurrentLinkedQueue for these cases use the Pattern of *Multiple
Producer/Single Consumer* (MpSc) or *Multiple Producer/Multiple Consumer*
- For low latency applications (in my case I'm talking QuickFixJ for the
financial industry) would it benefit from a MpSc that has low memory
footprint (more like low GC footprint)?
If that is the case I would shade JCtools dependency and use the queue:
Such queue uses ring buffers (power of two arrays) and linked them if they
need to expand, which is great for theoretically unbounded queues but with
the benefit of not used linked nodes per element but linked arrays.
Recently Netty replaced their non-blocking linked queues for that one.