YAMI4 - Messaging Solution for Distributed Systems

YAMI4 is a set of messaging libraries designed for distributed systems with particular focus on control and monitoring systems.

The major features of YAMI4 are:

peer-to-peer messaging

support for message priorities

built-in support for load balancing and automatic fail-over

support for publish-subscribe messaging

support for real-time development with comprehensive range of timeout features

high performance and scalability with non-blocking I/O

small memory and resource footprint, appropriate for microcontroller-based targets

no dependencies on other libraries

In addition to the above capabilities that are ready to use in the peer-to-peer mode, the YAMI4 suite offers:

optional separate message broker supporting tag-based filtering and multi-broker installations

message queue server for large-scale load-balancing scenarios

name service for easier configurability and management of complex systems

gateway service for ad-hoc command/response bindings

The YAMI4 suite for general computing is a multi-language and multi-platform package.

Operating systems: Microsoft Windows, POSIX (Linux, Max OS X, FreeBSD, ...),

QNX (with native IPC messaging), FreeRTOS, ThreadX, TI-RTOS. Programming languages: C++, Ada, Java, .NET, Python, Wolfram.

Apart from supporting general-purpose distributed systems, YAMI4 also has dedicated packages for other specialized areas:

See also the Frequently Asked Questions about YAMI4.

Advocacy - Why you should use YAMI4?

The following articles present various aspects of YAMI4 that can help you decide whether YAMI4 is a good solution to your problems:

Smart Grid Communication Middleware Comparison - a comparison of various middleware solutions, including YAMI4, with the Internet of Things (IoT) and grid communication in mind.

YAMI4 vs. ZeroMQ - a comparison of YAMI4 and ZeroMQ with respect to how they approach the most important issues of messaging system design.

How Small Is Your Middleware? - description of some measurements that were performed during evaluation of YAMI4 for some embedded platform; if you are fed up with bloated middleware, you will want to see how YAMI4 measures in terms of binary size and memory consumption.

100kB Message Broker - another report on motivation, development and size measurements that were done for the YAMI4 message broker reimplemented in pure C in order to fit on constrained embedded system.

Documentation

"Programming Distributed Systems with YAMI4" by Maciej Sobczak This book is a comprehensive YAMI4 manual that describes the messaging concepts and typical usage patterns. The HTML version of this book is available as well. YAMI4 Video Tutorial on YouTube This tutorial explains fundamental concepts of the YAMI4 library and demonstrates the use of example programs.

For the API reference see the following documentation:

Supplementary material:

yami4industry-misra.pdf - MISRA-C and POSIX standard compatibility report and system requirements, intended to document and justify all deviations from the MISRA-C coding standard and to explain the library expectations with regard to the target platform. This document is intended for users of the YAMI4Industry package.

YAMI4-AE11-print.pdf Printer-ready version of slides and comments prepared for the YAMI4 Ada tutorial.

(these are handouts from the Ada Connection conference, 2011, Edinburgh).

Discussion Groups

The YAMI4 LinkedIn Group and YAMI4 Google Group are places where YAMI4 users are invited to meet others and to discuss their experiences, find help and exchange ideas.

Licensing and Download

The YAMI4 libraries are dual-licensed and are available in the following two versions:

Professional package : Boost Software License, with intended use in both closed-source (which is a frequent choice in commercial projects) and open-source developments where dedicated technical support is required.

: Boost Software License, with intended use in both closed-source (which is a frequent choice in commercial projects) and open-source developments where dedicated technical support is required. GPL package General Public License, version 3, with intended use for product evaluation, student or academic projects and for all those open-source projects where the conditions of the GPL license are appropriate and which do not need to rely on technical support.

The following GPL packages are available for download (contact us for details on professional packages):

Package: Purpose: yami4-gpl-1.12.0.zip Universal source package: libraries and services. Appropriate for C++11, Python3 and Wolfram programmers

on Windows, Linux, Max OS X, QNX, FreeRTOS, ThreadX and TI-RTOS. yami4-gpl-1.10.2.zip Universal source package: libraries, services and tools. Appropriate for Ada, C++, Java, .NET and Python programmers on Windows, Linux and Max OS X.

Third-party tools

The Wireshark network protocol analyser contains a dedicated built-in YAMI4 filter.

Questions?

Need more information about the YAMI4 project? Do not hesitate to ask.