Skip to content

About

MapsMessaging server supports the standard IoT protocols out of the box and enables server to server comms, plus filtering across all protocols

Topics

Resources

Contributing

Security policy

Stars

20 stars

Watchers

1 watching

Forks

Latest commit

 

History

7,553 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MAPS Messaging Server

MAPS (Multi Adapter and Protocol Standards) Messaging Server addresses the complexities of IoT communication by supporting a wide range of protocols, ensuring compatibility and future-proof integration.

Introduction

Wire protocol standardization has promised interoperability and flexibility in IoT messaging. However, with the evolution of protocols, achieving this seamless interoperability has become challenging. MAPS Messaging Server bridges this gap by providing comprehensive support for multiple protocols and their versions, thus facilitating a unified messaging fabric.

Features

  • Wide Protocol Support: For a full list, see supported protocol versions.
  • Inter-Server Communication: Directly publish or subscribe to data on other messaging servers. Learn more.
  • Advanced Filtering: Utilize JMS Selector for fine-grained message control.
  • Extensibility: Easily integrate new or proprietary protocols.
  • Payload Transformation: Configurable translations, such as XML to JSON.
  • Namespace Partitioning: Distinct namespaces for users and groups to enhance security.
  • Comprehensive Management: JMX, JMX - RestAPI via Jolokia
  • RestAPI Management: Simple interface to manage connections, destinations, and schemas.

Advanced Features

  • Schema Repository: Centralized management for data integrity and format consistency. More info.
  • Direct Device Integration: Offers direct communication with I2C, 1-Wire, and SPI devices, mapping interactions to topic namespaces. More info
  • Versatile Authentication: Supports a variety of mechanisms, including .htpasswd, LDAP, JWT, Auth0, and more. More info
  • Cloud-Native Event Storage: Event data at rest can be pushed to S3 buckets for long-term storage. More info
  • Event Filtering: Advanced filtering between MAPS-servers or other servers with filtering capabilities, ensuring only relevant data is transmitted. More info
  • Robust Logging: Utilizes Logback for comprehensive and customizable logging configurations. More info
  • Non-Blocking Async Engine: Employs a highly efficient, non-blocking asynchronous engine and network layers, ensuring minimal locking and maximal concurrency for superior performance. Learn more.
  • LoRa Support: Native support for LoRa devices, enabling direct communication without requiring a LoRaWAN network.
  • Semtech Gateway Compatibility: Acts as a LoRaWAN gateway in conjunction with Semtech's technology, expanding the server's IoT ecosystem.
  • mDNS Discovery: Provides service discovery via mDNS, with future enhancements planned for automatic connection and namespace/schema propagation.
  • Security Domains: Configurable security domains allow for tailored authentication and authorization on a per-adapter/protocol basis.
  • Flexible Configuration: Supports configuration through both Consul and file-based setups, catering to various deployment environments.

Want to go deeper? Ask DeepWiki

Getting Started: "Hello World" Example

This example demonstrates a simple publish/subscribe scenario using the MQTT protocol.

Starting the Server

Make sure the server is running and listening for MQTT connections on port 1883 (default for MQTT).

Producer: Sending a Message

// Java-based pseudocode for an MQTT producer
MqttClient producer = new MqttClient("tcp://localhost:1883", "producer");
producer.connect();
MqttMessage message = new MqttMessage("Hello, World!".getBytes());
producer.publish("test/topic", message);
producer.disconnect();

Consumer: Receiving a Message

// Java-based pseudocode for an MQTT consumer
MqttClient consumer = new MqttClient("tcp://localhost:1883", "consumer");
consumer.connect();
consumer.subscribe("test/topic");
consumer.setMessageCallback((topic, msg) -> System.out.println(new String(msg.getPayload())));
// Keep the consumer running to listen for messages

Replace localhost with the server's IP address if running remotely. Ensure the topic names match in both producer and consumer.

Contributing

We welcome contributions! Please refer to our contribution guidelines for how you can participate in making MAPS Messaging Server even better.

License

The Maps Messaging Server is licensed under the Apache License 2.0, subject to the Commons Clause License Condition v1.0.

You may use, modify, and distribute the software in accordance with the terms of the Apache License 2.0 and the additional Commons Clause condition.

The Commons Clause restricts the sale of the software, including products or services whose value derives entirely or substantially from the functionality of the software.

For the complete license terms, see the LICENSE file in this repository.

Library and Server Build and Release Status

Library Name Buildkite Build Status SonarQube Quality Status
Authentication & Authorisation Framework Build status Quality Gate Status
CANBus Library Build status Quality gate status
Configuration Framework Build status Quality Gate Status
Device Integration Framework Build status Quality Gate Status
Dynamic Storage Framework Build status Quality Gate Status
JMS Selector Build status Quality Gate Status
JSON Query Build status Quality gate status
Logging Framework Build status Quality Gate Status
MAVLink Parser Build status Quality gate status
Naturally Ordered Structures Framework Build status Quality Gate Status
Non Blocking Task Queue Build status Quality gate status
Schema Framework Build status Quality Gate Status
Messaging Server Build status Quality Gate Status

Mutable.ai Auto Wiki

About

MapsMessaging server supports the standard IoT protocols out of the box and enables server to server comms, plus filtering across all protocols

Topics

Resources

Contributing

Security policy

Stars

20 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages