Modern applications in enterprise software comprise a complex web of streaming data sources and sinks. Data is constantly flowing across the network generated by a disparate set of clients, written in a multitude of programming languages, intended for local and/or remote resources. From the smallest devices in the Internet of Things (IoT) to the largest mainframes or connected subnets in Banking and Finance systems, the core abstraction used at the heart of all of this technology has been the message. However, messaging is an overloaded term with many meanings depending on the connotation and context. But we are going to focus on how C++ and the MQTT protocol can participate in the polyglot programming languages of the modern Enterprise Messaging landscape. Our focus will be on a scalable server-side framework that can provide messaging in any context from an IoT device all the way up to a large Banking mainframe.
In the context of Enterprise Messaging the MQTT protocol and the design of a C++ MQTT Message Broker provide a perfect mixture of language support and features to build a scalable, extensible, high-quality Enterprise Messaging solution. In order to demonstrate how this is possible I will introduce Enterprise Messaging Systems and enough of the concepts of Enterprise Messaging to be able to create a shared understanding of the role and features needed to implement a basic Message Broker using modern advanced C++ idioms. I will then demonstrate how data integration using a Message Broker, with specific messaging models, can support several message integration use-cases.
The talk will focus on demonstrating how C++ fits into the context of Event Driven-Architecture (EDA) at the enterprise-level and how the language's newer idioms allow it to excel at the task. The talk will utilize C++ 14 making extensive use of Template Metaprogramming, multi-threading, asynchronous I/O, correct usage of move semantics and examples of cross-platform networking abstractions. It is geared to the intermediate to advanced developer wanting to learn more about messaging and EDA, MQTT, and extending C++ deeper into the enterprise as a serious language addition to the polyglot movement in enterprise development today.
The talk piggy-backs on another MQTT talk about a client-side framework for an IoT project being proposed by Michael Caisse. The two are not dependent upon each other as Michael's talk covers client-side programming and mine covers server-side though the two can be used as endpoints for the other's demo portion.