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
Debug
build with default compiler
$ mkdir -p ~/build/qamqp-debug && cd ~/build/qamqp-debug $ cmake ~/src/qamqp $ cmake --build .
- building
Release
build 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.