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:
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.
- 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-2.0.0.zip
|
Universal source package: libraries and services.
Appropriate for C++ and Python3 programmers
on Windows, FreeBSD, Linux, Max OS X and QNX Neutrino.
|
yami4-gpl-1.12.0.zip
|
Universal source package: libraries and services.
Appropriate for C++, 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.