Scaling Financial Transaction using 0MQ and JSON
summary
Migrating legacy PowerBuilder services to Linux/C++ uses 0MQ (CPPZMQ) and nlohmann/json to cut message size by ~35% versus XML, drop a DB refresh from 90 to 10 minutes, speed authorization transfers ~5x and HSM interactions ~3x. Concrete issues covered: CentOS6 ABI conflicts with Oracle/OCCI, using dealer-router, pub-sub and inproc patterns, a single ZMQ context per process, JSON header-only mapping to C++ types, and a shared_timed_mutex protecting the app registry while apps auto-reconnect.
AI-written summary · about
chapters (25)
- 0:00Introduction and company background
- 1:03Financial transaction overview
- 5:16Legacy system challenges
- 8:04Technology choices: 0MQ and JSON
- 9:30First problem: GLIBCXX ABI issues
- 10:36JSON vs XML size comparison
- 12:00Code architecture overview
- 15:15WorkHorse class and 0MQ router
- 16:18Master control program and dealer router
- 18:22Pub/sub pattern implementation
- 19:47INPROC pattern for threads
- 21:53Live demo and reconnection behavior
- 24:23Performance improvements with 0MQ
- 25:47Database cache refresh speedup
- 26:28Scaling and redundancy benefits
- 27:33Q&A session begins
- 27:53Handling duplicate and out-of-order messages
- 28:58Legacy code split and C++ choice
- 30:02Mutex optimization discussion
- 30:45JSON vs Protocol Buffers comparison
- 32:11JSON library selection rationale
- 33:17Job control and application flow
- 34:23Company growth and technology adoption
- 35:05Handling multiple transaction formats
- 37:16Data normalization approach
related talks
52mA C++ MQTT Message Broker for the Enterprise
34mProxying Rabbits For Stability & Reliability
41mEnergy Consumption and Communicating Protocols
58mBuilding RESTful Interfaces in C++ With nlohmann and cpp-httplib
31mThe Zenoh Protocol: Zero Overhead Pub/sub, Store/Query and Compute
01h 09mCombining Modern C++ and Lua
01h 16mDesigning for C++ Concurrency Using Message Passing
36mEclipse Zenoh
