SeeChange and Message Queuing

SeeChange and message queuing 

SeeWare is designed to be scalable and split into components so that key functions can be replicated for scale or run at the edge, on a local server or in the cloud – see SeeWare Edge to Cloud and SeeChange and containers for more detail. 

To ensure fast end effective communication at scale between these functions, SeeChange takes advantage of message queueing systems. These provide several benefits, including: 

Asynchronous communication: the sender and receiver of a message do not have to be active at the same time. This enables the decoupling of services and allows systems to communicate with each other without waiting for an immediate response. 

Scalability: message queuing systems are designed to accommodate high volumes of messages and multiple consumers. This allows for the handling of large amounts of data in a distributed environment without overburdening any single system.

Message persistence: messages can be saved to disk instead of memory, ensuring that messages are not lost if a system or service fails. This is particularly important for critical applications and ensures that messages are delivered even if there are interruptions. 

SeeWare makes extensive use of ZMQ (ZeroMQ), a messaging library that provides a simple and lightweight way for applications to communicate with each other over various transport protocols, such as TCP, multicast, or shared memory.  

ZMQ is designed to be fast, scalable, and flexible, making it a popular choice for building distributed systems and high-performance messaging applications. 

ZMQ provides a variety of language bindings for popular programming languages, such as Python, C++, and Java. 

SeeWare supports external systems with MQTT (Message Queuing Telemetry Transport). The MQTT protocol was invented in 1999 by Andy Stanford-Clark (IBM) and Arlen Nipper (Arcom, now Cirrus Link). They needed a protocol for minimal battery loss and minimal bandwidth to connect with oil pipelines via satellite.  

Imagine that you have a lot of devices, such as environmental sensors, peripherals, and security cameras. These devices can generate a lot of data and need to communicate with each other and with servers to perform their tasks. However, they are often located remotely and use different types of networks and communication protocols, which can make it difficult for them to talk to each other. 

This is where MQTT comes in. It is a communication protocol that allows these devices to share information in a lightweight, efficient, and reliable way 

MQTT uses a publish-subscribe model, which means that devices can publish data to a central server, and other devices can subscribe to that data and receive updates in real-time. This makes it easier for devices to communicate with each other and share information without having to know each other’s location or communication protocol. 

In summary, message queuing systems such as ZMQ and MQTT provide a reliable and scalable way to communicate between systems and services, enabling asynchronous communication, fault tolerance, and decoupling of systems.