This first video sets the stage for learning ZeroMQ. It provides some background context for developing ZeroMQ-based solutions. Learn about the types of projects where ZeroMQ is a good fit, and about the broader ZeroMQ community.
- [Instructor] Before we learn about ZeroMQ, I'd like to dispel a common mistake and offer a word of caution. ZeroMQ is not a piece of middleware. It's not available in a rack mountable 1U form factor. You don't license it from an enterprise approved vendor. In other words, it's not a message queue. It is however a tool one might use to build a piece of middleware. And message queuing as a concept, does play a big part in designing solutions with ZeroMQ. Finally by way of disclaimer, when ZeroMQ refers to something as a socket, this is in no way shape or form like a traditional networking socket.
And any previous experience you may have had with socket level networking APIs, is likely to be unhelpful. So what is ZeroMQ? It's actually an umbrella term which can refer to many different things. First and foremost ZeroMQ is a vibrant community of distributed systems enthusiasts, both professionals and hobbyists. They primarily communicate via the ZeroMQ mailing list and various GitHub.com projects. But ZeroMQ is equally a collection of protocols.
These specifications develop by the ZeroMQ community, cover a wide range of distributed systems functionality and concerns. And they do so in a direct, evolvable, language agnostic fashion. In this course we'll be focusing on ZMTP, the ZeroMQ Message Transfer Protocol. It is foundational and most of the other specifications build upon it. Finally ZeroMQ can refer to the collection of libraries and tools developed by the community which implement the various protocols.
Throughout this course we'll be primarily focused on fszmq, a general purpose library for using ZMTP within .net programs. Internally it delegates much of the work to libzmq or more casually ZMQ. Which is the canonical CC++ implementation of ZMTP. However that detail will be essentially transparent for our purposes. There's a surprisingly wide range of solutions where ZeroMQ makes an appearance. Everything from file replication, to decentralized ad hoc networks, to web servers to microservices stacks.
But some of the more interesting solutions specifically targeting .net includes scientific notebooks, event sourcing infrastructure and work scheduling systems. And of course there are a host of obvious distributed solutions that have made use of ZeroMQ. In the remainder of this course we'll learn about ZeroMQ while primarily building a simple chat system which lets clients talk to one another via a simple relay server.
- Building a single-file application
- Two-way messaging
- Heartbeating to detect disconnects
- Broadcasting messages using publish/subscribe
- Combining one-way and two-way messaging channels
- Troubleshooting your app
- Designing and evolving protocols