From e9eca3c91f1f6796b4568a79252e85a61e525ce8 Mon Sep 17 00:00:00 2001 From: Juan Vanecek Date: Mon, 12 Aug 2024 19:42:34 -0300 Subject: [PATCH] Add support of debugging info in RabbitMQWorker --- .../RabbitMQClientTest.class.st | 20 +++++++++++++++- .../RabbitMQPublisher.class.st | 24 +++++++++++-------- .../Ansible-RabbitMQ/RabbitMQWorker.class.st | 16 ++++++++++++- 3 files changed, 48 insertions(+), 12 deletions(-) diff --git a/source/Ansible-RabbitMQ-Tests/RabbitMQClientTest.class.st b/source/Ansible-RabbitMQ-Tests/RabbitMQClientTest.class.st index 1987c208..d784d0cf 100644 --- a/source/Ansible-RabbitMQ-Tests/RabbitMQClientTest.class.st +++ b/source/Ansible-RabbitMQ-Tests/RabbitMQClientTest.class.st @@ -49,7 +49,8 @@ RabbitMQClientTest >> assertQueueStatusAfterConsuming: messagesToSend from: queu configuredBy: [ :options | options at: #queueName put: queueName; - at: #queueDurable put: false + at: #queueDurable put: false; + at: #enableDebuggingLogs put: true ] processingMessagesWith: [ :messageReceived | messageWasConsumed := true. @@ -267,6 +268,23 @@ RabbitMQClientTest >> testDebuggingLogsEnabled [ '\[INFO\] AMQP connection localhost\:(\d+)->localhost\:5672 closed due to Normal shutdown' } ] +{ #category : 'tests' } +RabbitMQClientTest >> testDebuggingLogsEnabledInWorker [ + + | queueName messagesToSend | + queueName := self queueName. + messagesToSend := 'Do it!'. + + self assertQueueStatusAfterPublishing: messagesToSend on: queueName. + + self + runMemoryLoggerDuring: [ self assertQueueStatusAfterConsuming: messagesToSend from: queueName ] + assertingLogRecordsMatchRegexes: + { '\[INFO\] AMQP connection localhost\:(\d+)->localhost\:5672 established successfully' . + '\[DEBUG\] RabbitMQ message consumed \{"messageConsumed"\:"Do it!","routingKey"\:"tasks-for-testDebuggingLogsEnabledInWorker","connectionDescription"\:"localhost\:(\d+)->localhost\:5672"\}' . + '\[INFO\] AMQP connection localhost\:(\d+)->localhost\:5672 closed due to Normal shutdown' } +] + { #category : 'tests' } RabbitMQClientTest >> testDebuggingLogsTurnedOff [ diff --git a/source/Ansible-RabbitMQ/RabbitMQPublisher.class.st b/source/Ansible-RabbitMQ/RabbitMQPublisher.class.st index 7ed83160..046cb3f6 100644 --- a/source/Ansible-RabbitMQ/RabbitMQPublisher.class.st +++ b/source/Ansible-RabbitMQ/RabbitMQPublisher.class.st @@ -41,6 +41,19 @@ RabbitMQPublisher >> initializeConfiguredBy: anOptionsDictionary [ channelConfigurationCommands := OrderedCollection new ] +{ #category : 'private - logging' } +RabbitMQPublisher >> logDebuggingInfoFor: aMessage publishedTo: aQueueName [ + + self shouldLogDebuggingInfo then: [ + LogRecord emitStructuredDebuggingInfo: 'RabbitMQ message published' with: [ :data | + data + at: #messagePublished put: aMessage; + at: #routingKey put: aQueueName; + at: #connectionDescription put: connection connectionPairsDescription + ] + ] +] + { #category : 'configuring' } RabbitMQPublisher >> onPublicationConfirmationDo: anAckBlock onRejectionDo: aNackBlock [ @@ -64,7 +77,6 @@ RabbitMQPublisher >> publish: aMessageCollection onQueueNamed: aQueueName [ RabbitMQPublisher >> publishOnly: aMessage onQueueNamed: aQueueName [ | tryToPublishMessage | - self ensureChannelOpen. tryToPublishMessage := [ channel @@ -73,15 +85,7 @@ RabbitMQPublisher >> publishOnly: aMessage onQueueNamed: aQueueName [ routingKey: aQueueName properties: self persistentDeliveryMode ]. - - self shouldLogDebuggingInfo then: [ - LogRecord emitStructuredDebuggingInfo: 'RabbitMQ message published' with: [ :data | - data - at: #messagePublished put: aMessage; - at: #routingKey put: aQueueName; - at: #connectionDescription put: connection connectionPairsDescription - ] - ]. + self logDebuggingInfoFor: aMessage publishedTo: aQueueName. tryToPublishMessage on: self connectivityErrors diff --git a/source/Ansible-RabbitMQ/RabbitMQWorker.class.st b/source/Ansible-RabbitMQ/RabbitMQWorker.class.st index 10d90246..44dd0620 100644 --- a/source/Ansible-RabbitMQ/RabbitMQWorker.class.st +++ b/source/Ansible-RabbitMQ/RabbitMQWorker.class.st @@ -62,7 +62,20 @@ RabbitMQWorker >> initializeConfiguredBy: anOptionsDictionary processingMessages messageProcessor := aMessageProcessor ] -{ #category : 'private' } +{ #category : 'private - logging' } +RabbitMQWorker >> logDebuggingInfoFor: aMessage [ + + self shouldLogDebuggingInfo then: [ + LogRecord emitStructuredDebuggingInfo: 'RabbitMQ message consumed' with: [ :data | + data + at: #messageConsumed put: aMessage body utf8Decoded; + at: #routingKey put: self queueName; + at: #connectionDescription put: connection connectionPairsDescription + ] + ] +] + +{ #category : 'private - logging' } RabbitMQWorker >> logDisconnectionDueTo: anError [ LogRecord emitError: @@ -89,6 +102,7 @@ RabbitMQWorker >> startConsumingFromQueue [ channel prefetchCount: 1. channel consumeFrom: self queueName applying: [ :message | + self logDebuggingInfoFor: message. messageProcessor value: message. channel basicAck: message method deliveryTag ]