mirror of
https://github.com/apache/activemq-artemis.git
synced 2025-02-12 04:55:36 +00:00
OpenWireFormat instances are shared between OpenWire connections/sessions/consumers, preventing the clients to scale due to the synchronized marshal/unmarshal on it. It includes: - direct transport buffer pooling - groupId SimpleString pooling - clientId SimpleString pooling - reduced ActiveMQDestination[] and AtomicLong allocations on AMQSession:send - reduced ActiveMQDestination allocations - refactored shouldBlockProducer path of AMQPSession::send to reduce method size - exclusive OpenWireFormat per session and connection (in/out) to avoid contention - refactored trace log to favour inlining - changed lastSent volatile set into lazy set to avoid full barrier cost on x86 - stateless OpenWireMessageConverter - send's lock removal thanks to thread-safe NettyConnection