MQBA
An implementation of MQTT publish/subscribe in ABAP, with a broker inside the system built on ABAP Push Channels and ABAP Messaging Channels, and a bridge to external non-SAP brokers.
MQBA implements MQTT's publish/subscribe mechanism in ABAP: messages are exchanged through a central broker instance inside the system, built on ABAP Push Channels, ABAP Messaging Channels and shared memory so that receiving them needs no polling. The maintainer created it to use the MQTT-driven IoT world from an SAP ABAP backend, especially in innovation projects. A bridge to external, non-SAP MQTT brokers is included, done at the time of writing by a gateway service based on Node-RED; from ABAP 7.53, where SAP's kernel carries native MQTT support, the companion project MQBA_PINS can be used instead. Area menu ZMQBA holds the main transactions and the customising tables, and other ABAP programs reach the broker through function group ZMQBA_API_BROKER.
Facts
Where it sits
Who is behind it
In the atlas: maintains 2, contributes to 3@MDJoergmaintainerGregor WolfContributes to this
In the atlas: maintains 17, contributes to 59, wrote 2@gregorwolfLars HvamContributes to this
In the atlas: maintains 13, contributes to 92, wrote 1@larshp2 contributors
Before choosing this
Signals
ActivityQuietNo published releases; repository quiet for 75 months
It publishes no releases, and its repository has been quiet for at least 24 full months. This may be normal for stable software; check whether its current state still fits your use.
Conditions
PracticalFunctional boundary
The maintainer calls the project beta, states there are no experiences with productive usage, and leaves productive use at your own risk. Two further conditions are stated: the implementation used a NetWeaver ABAP stack 7.50 and a 7.40 was not tested, and a system user has to be maintained for the websocket services, because the external websocket tools do not support user-based authorization.
PolicySAP API Policy 4.2026a§ 2.2.2, 3, FAQ 12, FAQ 27, FAQ 38from Event MeshAn ABAP event integration exposes inbound access to SAP APIs or becomes a systematic or large-scale extraction or replication path. An outbound notification or callback alone is not enough.
- § 2.2.2 AI call sequences and data extraction. Outside SAP-endorsed architectures, data services or expressly identified pathways, the policy prohibits specified agentic API use and systematic or large-scale extraction.
- § 3 Monitoring and remedies. SAP states that it may monitor API use and take enforcement actions when use does not comply with the documentation and policy.
- § FAQ 12 Outbound interfaces. The accompanying FAQ distinguishes external consumption of SAP-provided services from outbound notifications or callbacks sent by an SAP system, which it places outside this policy's scope.
- § FAQ 27 Custom-developed APIs. Customer-namespace ABAP interfaces are not prohibited merely because they are custom, but their underlying SAP dependencies and usage pattern still determine whether the use aligns with the policy.
- § FAQ 38 Large-scale data access. Large-scale extraction and replication must use access mechanisms and patterns documented for that purpose rather than treating a transactional or custom API as a general bulk-data surface.
Direction and usage pattern decide the policy relevance. Customer ABAP code may publish events outward, but it must not be used to bypass SAP API controls or substitute a custom event stream for a documented bulk-data pathway.
SAP API Policy 4.2026a →What it declares
Every artifact
- Type
- App
- Origin
- Independently maintained
As an app
- Where it runs
- Inside the system it serves
- Distributed through
- abapGit
Connections
Emitting and consuming business events across systems through brokers
Git client written in ABAP that runs inside the system
Download
README
quoted from MDJoerg/MQBA under MIT, read
What is MQBA?
The MQBA or Message Queue Broker ABAP is an implementation of the MQTT concept for ABAP. This means a simple publish/subscribe mechanism to exchange messages via a central broker instance. See Wikipedia for more information about the concept.
The project was created to use the power of the MQTT driven IoT world within SAP ABAP Backend especially for innovation projects.
A bridge to external MQTT brokers (Non-SAP) is included in this project. At the moment this will be done by a gateway service based on Node-RED.
With ABAP 7.53 SAP includes native MQTT support to the standard kernel. With a release >= 7.53 the project MQBA_PINS can be used.
Current State and news
The project is in an beta state. At the moment there are no experiences with productive usage. You can do it at your own risk.
Some features are planned for the future. So the programs could be changed.
See project news on Twitter with hashtag #SAPMQBA.
Update 2019/02/17
- native MQTT support with project MQBA_PINS seems to be stable
- german translations added
- german blog Das SAP ABAP Backend als “IoT Ding”: SAP Monitoring über MQTT
Update 2019/01/04:
- new version with some bugfixes and support for external broker proxies (daemons) added
- Plugin MQBA_PINS with native MQTT protocol support tested for S/4 1809 (ABAP 7.53)
- support for other background broker proxies available
Technology background
The project uses modern SAP technologies such as ABAP Push Channels (APC), ABAP Messaging Channels (AMC) or Shared Memory to receive messages without polling to save system resources.
Other new(er) technologies are planned for future enhancements.
Installation and configuration
ABAP Stack
Install the Project with ABAPGit. An SAP Netweaver ABAP Stack 7.50 was used for implementation. A Netweaver 7.40 was not tested so far. The default package for installation is ZMQBA.
Activate the services ZMQBA_GW and ZMQBA_INT (websocket nodes) with transaction SICF if inactive. With newer releases of abapGit this could be done automatically. A system user have to be maintained for the services because external websocket tools do not support user based authorization.
Bridge to external brokers
If you want to activate the bridge to external MQTT brokers you will need a Node-RED Service and flow as the connector. See Node-RED-Installation documentation for further information.
The Node-RED Service can be installed on a Raspberry PI or as Docker image for example. Take a look to the openhabian project. In this distribution for Raspberry PI Node-RED, Mosquitto MQTT and openHAB are included and preconfigured.
Since ABAP 7.53 a native ABAP MQTT support is existing. If you have an SAP ABAP Netweaver Stack >= 7.53 you can install the MQBA Plugin project MQBA_PINS and can use this implementation instead of the Node-RED gateway. Configure an external broker like iot.eclipse.org (area menu ZMQBA, configuration) and catch the messages via an ABAP daemon service.
Customizing
The area menu ZMQBA contains the main transactions and customizing tables. Enter ZMQBA as transaction code to show this menu.
Simple Tests and main use cases
Use internal messaging
Use the following transaction to test the internal messaging:
- ZMQBA_MSG_LIST - display broker messages from memory
- ZMQBA_PUB - publish a message
- ZMQBA_SUB - subscribe to a message
Direct private messaging is possible with the session id.
Use external messaging
External messaging is available through a configured Node-RED-Service.
Use the transaction ZMQBA_PUB with activated flag "as external message". Then the message will be routed to the external gateway. You can see the message with MQTT Clients (e.g. MQTT.fx).
If you want to send a MQTT message from the outside use a MQTT Client and display the broker memory with transaction ZMQBA_MSG_LIST.
Use programming interface
See function group ZMQBA_API_BROKER for use the broker features from other ABAP programs. A object oriented library is working behind these function modules.
Realtime messaging to WebUI and Websocket Apps
The internal messaging uses the SICF Service ZMQBA_INT with ABAP Push Channel (APC) Technology and the PCP Protocol. You can connect to websocket ws://yoursaphost:yourport/sap/bc/apc/sap/zmqba_int with a Websocket client like the Chrome plugin Simple Websocket Client. Or use the SAP APC test application http://yoursaphost:yourport/sap/bc/webdynpro/sap/wdr_test_apc_wsp?apc_application=zmqba_int to receive and send messages.
SAP supports the PCP Protocol with a special javascript library. See SAP Help for more information.
Project supporters
Some organizations and individuals support this project and make it possible. Thank you to:
Others providing
Compare all 20 on the Event Mesh page →- SAP Integration Suite, advanced event meshSAP Integration Suite, advanced event meshAn event streaming, event management and monitoring platform for event-driven architecture, offered within SAP Integration Suite.sap official, btpEvent streaming and management platform in Integration Suitefrom BTP/BAIP
- SAP Cloud Application Event HubSAP Cloud Application Event HubDistributes the business events SAP cloud applications publish to the other SAP cloud applications in a landscape, with subscriptions managed in its own UI and no topics or queues to configure.sap official, btpDistributes business events between SAP cloud applicationsfrom BTP/BAIP
- Event MeshEvent MeshManaged queues and topics over AMQP, MQTT and a REST gateway, and the bus SAP's own applications publish their business events to.sap official, btpManaged queues and topics over AMQP, MQTT and RESTfrom BTP/BAIP
- SAP Integration Suite, Event MeshSAP Integration Suite, Event MeshThe event broker activated inside SAP Integration Suite: queues, topic subscriptions and webhook subscriptions, reached over AMQP, MQTT and HTTP.sap official, btpEvent broker inside SAP Integration Suitefrom BTP/BAIP
- com.sap.cds:cds-feature-advanced-event-meshcom.sap.cds:cds-feature-advanced-event-meshA beta CAP Java plugin that adds SAP Integration Suite, advanced event mesh as a messaging broker, activated by setting a messaging service's kind to aem.sap official, capCAP Java plugin for SAP Integration Suite, advanced event meshfrom CAP
- com.sap.cds:cds-feature-enterprise-messagingcom.sap.cds:cds-feature-enterprise-messagingA CAP Java feature that connects a CAP messaging service to SAP Event Mesh, activated by setting the service's kind to enterprise-messaging, and looks up the bound instance.sap official, capConnects CAP Java messaging to SAP Event Meshfrom CAP
- com.sap.cds:cds-feature-event-hubcom.sap.cds:cds-feature-event-hubA CAP Java plugin that connects CAP's messaging service to SAP Cloud Application Event Hub, so an application sends and consumes business events without coding against its API.sap official, capConnects CAP Java messaging to SAP Cloud Application Event Hubfrom CAP
- com.sap.cds:cds-feature-kafkacom.sap.cds:cds-feature-kafkaA CAP Java feature that connects a CAP messaging service to Apache Kafka for intra-application messaging, through the Apache Kafka client library rather than a managed SAP messaging service.sap official, capConnects CAP Java messaging to Apache Kafkafrom CAP
- com.sap.cds:cds-feature-rediscom.sap.cds:cds-feature-redisA beta CAP Java feature that connects a CAP messaging service to Redis Pub/Sub, which broadcasts each event to every subscribed instance and does not guarantee delivery.sap official, capBeta connector from CAP Java messaging to Redis Pub/Subfrom CAP
- com.sap.cds:cds-services-bomcom.sap.cds:cds-services-bomThe Maven bill of materials for CAP Java, pinning every com.sap.cds module in a release, from the API and core runtime to the Spring Boot starters and the CQN engine, to the same version.sap official, capMaven bill of materials pinning CAP Java module versionsfrom CAP
- @cap-js/advanced-event-mesh@cap-js/advanced-event-meshIntegrates CAP with SAP Integration Suite advanced event mesh.sap official, capCAP integration with SAP Integration Suite advanced event meshfrom CAP
- @cap-js/asyncapi@cap-js/asyncapiExports AsyncAPI documents describing the events a CAP service emits and consumes.sap official, capExports AsyncAPI documents for a CAP service's eventsfrom CAP
- @cap-js/event-broker@cap-js/event-brokerConsumes events from SAP Cloud Application Event Hub.sap official, capConsumes events from SAP Cloud Application Event Hub in CAPfrom CAP
- cds-kafkacds-kafkaA Kafka adapter for CAP that registers Kafka topics as a CDS messaging service over KafkaJS, so emit and on work unchanged, with per-message keys, partitions and topics set through headers.independent, capKafka adapter exposing topics as a CDS messaging servicefrom CAP
- cesar-sap/abap_kafka_rest_proxycesar-sap/abap_kafka_rest_proxyAn ABAP connector that produces and consumes data to and from Kafka through the Confluent Kafka REST Proxy, since SAP NetWeaver ABAP has no native Kafka client; tested on ABAP 7.5x.independent, abapABAP connector to Kafka through the Confluent Kafka REST Proxyfrom ABAP
- cds-event-monitoringcds-event-monitoringA CAP plugin that stores every event received on its configured messaging topics in a table, with a Fiori-annotated service to browse them, resend events and drain a dead-message queue.independent, capStores, browses and resends messages a CAP service receivesfrom CAP
- gregorwolf/AWS_SNS4ABAPgregorwolf/AWS_SNS4ABAPAn ICF handler that receives Amazon SNS notifications in an ABAP system as an HTTPS subscriber endpoint, leaving what happens to a notification once it arrives to the caller.independent, abapICF handler receiving Amazon SNS notifications in an ABAP systemfrom ABAP
- INVIXO/abapMQINVIXO/abapMQAn MQTT client implemented in ABAP, supporting protocol version 3.1.1, so an ABAP program can publish and subscribe to a broker; it requires ABAP 750sp01 and installs through abapGit.independent, abapMQTT 3.1.1 client implemented in ABAPfrom ABAP
- @sap/cds@sap/cdsThe CAP Node.js runtime, which compiles the CDS model, serves the services declared in it, answers generic requests before any handler runs, and loads every cds-plugin.sap official, capCAP Node.js runtimefrom CAP
Details
Sources
Sources are graph entities: the same page may back several entries, and an unreachable source flags every row that rests on it.
Compatibility and provenance
abaplint
Flavors
“An SAP Netweaver ABAP Stack 7.50 was used for implementation.” — MDJoerg/MQBA — README, Installation and configuration
Contributors
History in the atlas
- First seen.
For your agent
- Ref
artifact:mdjoerg-mqba- JSON
- /artifacts/mdjoerg-mqba.json
- MCP
- Connecting an agent