Code Monkey home page Code Monkey logo

maps-messaging / mapsmessaging_server Goto Github PK

View Code? Open in Web Editor NEW
5.0 2.0 1.0 7.77 MB

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

License: Mozilla Public License 2.0

C++ 4.41% C 0.46% Makefile 0.06% Java 85.71% Shell 0.36% Python 1.49% XSLT 0.76% CSS 6.01% Batchfile 0.17% Dockerfile 0.38% HTML 0.16% JavaScript 0.03%
protocols interoperability protocol-standards amqp multi-adapter mqtt-server mqtt-sn mqtt stomp stompwebsocket

mapsmessaging_server's Introduction

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, and web-based management with hawtio.
  • 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.

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 dual-licensed under the Mozilla Public License Version 2.0 (MPL 2.0) and the Apache License 2.0 with Commons Clause License Condition v1.0.

Under the MPL 2.0 license, the software is provided for use, modification, and distribution under the terms of the MPL 2.0.

Additionally, the "Commons Clause" restricts the selling of the software, which means you may not sell the software or services whose value derives entirely or substantially from the software's functionality.

For full license terms, see the LICENSE file in the repository.

SonarCloud

mapsmessaging_server's People

Contributors

dependabot[bot] avatar krital avatar mbuckton avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

thetwosents

mapsmessaging_server's Issues

Review Sonarcloud Code Smells and reduce them or explain them

With Sonarcloud now integrated in we need to review the code smells, starting with critical, and work through them. Most just need to adjust the code to fix the issue, though a minority may need to be ignored. If any are ignored there needs to be a reason added to the code to justify the action

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.