A Qt4/Qt5 implementation of AMQP 0.9.1, focusing primarily on RabbitMQ support.
-
ensure you have the following packages on the
PATH- CMake >= 3.12
- Qt >= 5.9
- lcov
-
checkout sources
$ cd ~/src
$ git clone git@github.com:ssproessig/qamqp.git-
we are going to build in a separate out-of-tree build directory
- building
Debugbuild with default compiler
$ mkdir -p ~/build/qamqp-debug && cd ~/build/qamqp-debug $ cmake ~/src/qamqp $ cmake --build .
- building
Releasebuild with clang compiler and ninja generator
$ mkdir -p ~/build/qamqp-clang-release && cd ~/build/qamqp-clang-release $ $ EXPORT CXX=clang++-10 $ $ cmake -G Ninja ~/src/qamqp $ cmake --build .
- building
-
running tests with coverage from inside the build directory
$ # ... after building, in the build directory
$ ctest -V # -V for verbose output of QTest
$ sh generate_coverage.sh
$ ...
$ firefox coverage/index.html- building a release with Visual Studio 2019 Win64 (make sure to have OpenCppCoverage on the
PATH)
F:\2019\qamqp>cmake G:\_projects\qamqp
...
F:\2019\qamqp>cmake --build . --parallel 8 --config RelWithDebInfo
...
F:\2019\qamqp>Opencppcoverage --export_type html:coverage --modules "qamqp*.exe" --sources G:\_projects\qamqp\src --optimized_build --cover_children -- ctest -C RelWithDebInfo
...
... open coverage/index.html in your browser ....
...
F:\2019\qamqp>cpack -G ZIP
...
CPack: - package: F:/2019/qamqp/qamqp-0.5.0-ee2bfd8-win64.zip generated.Use -DWITH_TUTORIALS=ON to enable the tutorials in CMake.
Coming soon!
| method | supported |
|---|---|
| connection.start | ✓ |
| connection.start-ok | ✓ |
| connection.secure | ✓ |
| connection.secure-ok | ✓ |
| connection.tune | ✓ |
| connection.tune-ok | ✓ |
| connection.open | ✓ |
| connection.open-ok | ✓ |
| connection.close | ✓ |
| connection.close-ok | ✓ |
| method | supported |
|---|---|
| channel.open | ✓ |
| channel.open-ok | ✓ |
| channel.flow | ✓ |
| channel.flow-ok | ✓ |
| channel.close | ✓ |
| channel.close-ok | ✓ |
| method | supported |
|---|---|
| exchange.declare | ✓ |
| exchange.declare-ok | ✓ |
| exchange.delete | ✓ |
| exchange.delete-ok | ✓ |
| method | supported |
|---|---|
| queue.declare | ✓ |
| queue.declare-ok | ✓ |
| queue.bind | ✓ |
| queue.bind-ok | ✓ |
| queue.unbind | ✓ |
| queue.unbind-ok | ✓ |
| queue.purge | ✓ |
| queue.purge-ok | ✓ |
| queue.delete | ✓ |
| queue.delete-ok | ✓ |
| method | supported |
|---|---|
| basic.qos | ✓ |
| basic.consume | ✓ |
| basic.consume-ok | ✓ |
| basic.cancel | ✓ |
| basic.cancel-ok | ✓ |
| basic.publish | ✓ |
| basic.return | ✓ |
| basic.deliver | ✓ |
| basic.get | ✓ |
| basic.get-ok | ✓ |
| basic.get-empty | ✓ |
| basic.ack | ✓ |
| basic.reject | ✓ |
| basic.recover | ✓ |
| method | supported |
|---|---|
| tx.select | X |
| tx.select-ok | X |
| tx.commit | X |
| tx.commit-ok | X |
| tx.rollback | X |
| tx.rollback-ok | X |
| method | supported |
|---|---|
| confirm.select | ✓ |
| confirm.select-ok | ✓ |
- Thank you to @fuCtor for the original implementation work.