From 02c32eecdf6d37fd6a86bb8dc6e78076ac757dc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B3=D0=B5=D0=B9=20=D0=95=D0=BA=D0=B8?= =?UTF-8?q?=D0=BC=D0=BE=D0=B2?= Date: Tue, 1 Nov 2022 10:59:35 +0500 Subject: [PATCH 1/2] =?UTF-8?q?issue-83=20=D0=94=D0=BE=D1=80=D0=B0=D0=B1?= =?UTF-8?q?=D0=BE=D1=82=D0=BA=D0=B0=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=D0=B0?= =?UTF-8?q?=20DeclareQueue?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Изменил возвращаемое значение на строку json с количеством сообщений и потребителей в очереди --- README.md | 5 ++++- src/RabbitMQClient.cpp | 10 ++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 621b49f..638bd61 100644 --- a/README.md +++ b/README.md @@ -83,7 +83,10 @@ * arguments - Строка - [НЕОБЯЗАТЕЛЬНЫЙ] произвольные свойства в формате Json-объект. Пример: `{"x-message-ttl": 60000}`. Документация: https://www.rabbitmq.com/queues.html#optional-arguments Возвращаемое значение: - - Имя очереди, заданное явно в 1-м параметре. + - Строка - информация об очереди в формате объекта json. Пример: `{"name": "my-queue", "messageCount": 10, "consumerCount": 0}`, где: + * name - имя очереди, заданное явно в 1-м параметре; + * messageCount - количество сообщений в очереди; + * consumerCount - количество подключенных к очереди потребителей сообщений. DeleteQueue - Удаляет очередь с сервера diff --git a/src/RabbitMQClient.cpp b/src/RabbitMQClient.cpp index 27a5fff..bfec1f8 100644 --- a/src/RabbitMQClient.cpp +++ b/src/RabbitMQClient.cpp @@ -123,14 +123,20 @@ void RabbitMQClient::declareQueueImpl(Biterp::CallContext& ctx) { string propsJson = ctx.stringParamUtf8(); AMQP::Table args = headersFromJson(propsJson); + string result; if (maxPriority != 0) { args.set("x-max-priority", maxPriority); } { connection->channel() ->declareQueue(name, (onlyCheckIfExists ? AMQP::passive : 0) | (durable ? AMQP::durable : 0) | (exclusive ? AMQP::exclusive : 0) | (autodelete ? AMQP::autodelete : 0), args) - .onSuccess([this]() + .onSuccess([this, &result](const std::string& name, uint64_t messageCount, uint64_t consumerCount) { + json queueInfo = json::object(); + queueInfo["name"] = name; + queueInfo["messageCount"] = messageCount; + queueInfo["consumerCount"] = consumerCount; + result = queueInfo.dump(); connection->loopbreak(); }) .onError([this](const char* message) @@ -139,7 +145,7 @@ void RabbitMQClient::declareQueueImpl(Biterp::CallContext& ctx) { }); } connection->loop(); - ctx.setStringResult(u16Converter.from_bytes(name)); + ctx.setStringResult(u16Converter.from_bytes(result)); } From f484831b5e5b9b76ced0af277aacb7ad24440b77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B3=D0=B5=D0=B9=20=D0=95=D0=BA=D0=B8?= =?UTF-8?q?=D0=BC=D0=BE=D0=B2?= Date: Tue, 1 Nov 2022 11:16:27 +0500 Subject: [PATCH 2/2] =?UTF-8?q?=D0=9E=D0=BF=D0=B8=D1=81=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D0=B2=D0=BE=D0=B7=D0=B2=D1=80=D0=B0=D1=89=D0=B0=D0=B5?= =?UTF-8?q?=D0=BC=D0=BE=D0=B3=D0=BE=20=D0=B7=D0=BD=D0=B0=D1=87=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 638bd61..7b7a496 100644 --- a/README.md +++ b/README.md @@ -84,9 +84,9 @@ Возвращаемое значение: - Строка - информация об очереди в формате объекта json. Пример: `{"name": "my-queue", "messageCount": 10, "consumerCount": 0}`, где: - * name - имя очереди, заданное явно в 1-м параметре; - * messageCount - количество сообщений в очереди; - * consumerCount - количество подключенных к очереди потребителей сообщений. + * name - Имя очереди, заданное явно в 1-м параметре + * messageCount - Количество сообщений в очереди + * consumerCount - Количество подключенных к очереди потребителей сообщений. DeleteQueue - Удаляет очередь с сервера