diff --git a/src/qamqpclient.cpp b/src/qamqpclient.cpp index 68916d2..d2b9baf 100644 --- a/src/qamqpclient.cpp +++ b/src/qamqpclient.cpp @@ -31,6 +31,7 @@ QAmqpClientPrivate::QAmqpClientPrivate(QAmqpClient *q) error(QAMQP::NoError), q_ptr(q) { + qRegisterMetaType(); } QAmqpClientPrivate::~QAmqpClientPrivate() diff --git a/src/qamqpmessage.cpp b/src/qamqpmessage.cpp index 2f8b36b..0b86648 100644 --- a/src/qamqpmessage.cpp +++ b/src/qamqpmessage.cpp @@ -7,7 +7,6 @@ QAmqpMessagePrivate::QAmqpMessagePrivate() : deliveryTag(0), leftSize(0) { - qRegisterMetaType("QAmqpMessage::PropertyHash"); } ////////////////////////////////////////////////////////////////////////// diff --git a/tests/auto/qamqpexchange/tst_qamqpexchange.cpp b/tests/auto/qamqpexchange/tst_qamqpexchange.cpp index 527602b..38011a9 100644 --- a/tests/auto/qamqpexchange/tst_qamqpexchange.cpp +++ b/tests/auto/qamqpexchange/tst_qamqpexchange.cpp @@ -27,6 +27,7 @@ private Q_SLOTS: void confirmDontLoseMessages(); void passiveDeclareNotFound(); void cleanupOnDeletion(); + void testQueuedPublish(); private: QScopedPointer client; @@ -217,5 +218,22 @@ void tst_QAMQPExchange::cleanupOnDeletion() QVERIFY(waitForSignal(exchange, SIGNAL(closed()))); } +void tst_QAMQPExchange::testQueuedPublish() +{ + QAmqpExchange *defaultExchange = client->createExchange(); + defaultExchange->enableConfirms(); + QVERIFY(waitForSignal(defaultExchange, SIGNAL(confirmsEnabled()))); + + QAmqpMessage::PropertyHash properties; + properties[QAmqpMessage::DeliveryMode] = "2"; // make message persistent + for (int i = 0; i < 10000; ++i) { + QMetaObject::invokeMethod(defaultExchange, "publish", Qt::QueuedConnection, + Q_ARG(QString, "noop"), Q_ARG(QString, "confirms-test"), + Q_ARG(QAmqpMessage::PropertyHash, properties)); + } + + QVERIFY(defaultExchange->waitForConfirms()); +} + QTEST_MAIN(tst_QAMQPExchange) #include "tst_qamqpexchange.moc"