[Development] QtFluentMQ

team fluentmq fluentmq at outlook.com
Wed Aug 23 14:41:34 CEST 2023


Hello,

I forgot to mention that we're looking forward to a qtlab repository creation to migrate the Kafka soruces and developpe the AMQP support project as a Qt module.

The design proposal is built around the bridge pattern which is a PIMPL tree. We have people rooting for a plugin based arch similar to Qt's RHI design.

Both design provide seamless public API from the user point of view. The latter is less popular choice in the team due to type safety issues as the dynamic configuration capabilities of the module would require to ignore configurations and commands if the feature is not supported by a particular (version of a) MQ platform. The bridge design offers stronger type safety thanks to the abstraction & PIMPL tree pair.

Please feel free to ask if you need more info on the design details if necessary for the voting process.

Br
QtFluentMQ Team


________________________________
From: team fluentmq
Sent: Thursday, August 17, 2023 4:36 PM
To: development at qt-project.org <development at qt-project.org>
Subject: QtFluentMQ


The "QtFluentMQ" project aims to create a user-friendly and versatile message queue (MQ) client using the Qt 6 framework. This client seamlessly handles communication with major MQ platforms. The first release would implement the AMQP protocol thus supporting RabbitMQ, ActiveMQ, Apollo, IbmMQ, AmazonMQ and more. It will also migrate the existing Kafka implementation to Qt to support the Kafka platform as well, the current MQ market leader.

At its core, the project involves a top-layer abstraction called QMQInstance. This layer acts as a bridge between the application and various MQ platforms. Within this layer, there are two main components: QConsumer and QProducer, which can also be referred to as QQmlConsumer and QQmlProducer when working with QML.

QMQInstance provides a unified QMessage Interface that simplifies the process of sending and receiving data to and from different MQ brokers. This uniform interface streamlines the interaction with multiple MQ platforms, making it easier for developers to integrate messaging functionality into their applications.

One of the standout features of this project is its dynamic configurability. The client can be configured through a JSON input, which can either be provided in memory or via a stream. This flexibility allows developers to adapt the client's behavior to specific use cases and requirements without significant code changes.

Additionally, the project supports queues context switching. This means that the client can seamlessly switch between different queues or channels within the MQ platforms. This feature is particularly useful for managing multiple communication channels efficiently and ensuring the smooth flow of data.

Finally, the QtFluentMQ actively supports open-source initiatives like Plumber<https://github.com/streamdal/plumber>, a versatile CLI tool for seamless interaction with various messaging systems, including Kafka and RabbitMQ. By collaborating with projects like Plumber, Fluent MQ enhances the CI/CD process by offering an all-in-one tooling package that streamlines operations and simplifies integration tasks."

In summary, QtFluentMQ project offers a comprehensive and easy-to-use solution for interacting with various MQ platforms. Its abstraction layer, dynamic configurability, and support for queues context switching contribute to a seamless messaging experience for developers working with Qt 6 applications.


Br
QtFluentMQ Team
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/development/attachments/20230823/da82e89f/attachment-0001.htm>


More information about the Development mailing list