diff --git a/prime-router/src/main/kotlin/fhirengine/azure/FHIRFunctions.kt b/prime-router/src/main/kotlin/fhirengine/azure/FHIRFunctions.kt index cd3e59e2d3d..8d10d783e17 100644 --- a/prime-router/src/main/kotlin/fhirengine/azure/FHIRFunctions.kt +++ b/prime-router/src/main/kotlin/fhirengine/azure/FHIRFunctions.kt @@ -34,6 +34,7 @@ import gov.cdc.prime.router.report.ReportService import org.apache.commons.lang3.StringUtils import org.apache.logging.log4j.kotlin.Logging import org.jooq.exception.DataAccessException +import java.util.Base64 class FHIRFunctions( private val workflowEngine: WorkflowEngine = WorkflowEngine(), @@ -204,7 +205,7 @@ class FHIRFunctions( } catch (ex: SubmissionSenderNotFound) { // This is a specific error case that can occur while handling a report via the new Submission service // In a situation that the sender is not found there is not enough information to record a report event - // and we want a poison queue message to be immediately added so that the configuration can be fixed + // so, we want a poison queue message to be immediately added so that the configuration can be fixed logger.error(ex) val tableEntity = Submission( ex.reportId.toString(), @@ -220,7 +221,8 @@ class FHIRFunctions( // that will not be resolved if the message is automatically retried // Instead, the error is recorded as an event and message is manually inserted into the poison queue val report = databaseAccess.fetchReportFile(messageContent.reportId) - val poisonQueueMessageId = queueAccess.sendMessage("${messageContent.messageQueueName}-poison", message) + val encodedMsg = Base64.getEncoder().encodeToString(message.toByteArray()) + val poisonQueueMessageId = queueAccess.sendMessage("${messageContent.messageQueueName}-poison", encodedMsg) fhirEngine.reportEventService.sendReportProcessingError( ReportStreamEventName.PIPELINE_EXCEPTION, report, diff --git a/prime-router/src/test/kotlin/azure/FHIRFunctionsTests.kt b/prime-router/src/test/kotlin/azure/FHIRFunctionsTests.kt index 6ccd26f0852..a7b7986874c 100644 --- a/prime-router/src/test/kotlin/azure/FHIRFunctionsTests.kt +++ b/prime-router/src/test/kotlin/azure/FHIRFunctionsTests.kt @@ -27,6 +27,7 @@ import org.jooq.tools.jdbc.MockResult import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test import org.junit.jupiter.api.assertThrows +import java.util.Base64 import java.util.UUID class FHIRFunctionsTests { @@ -98,7 +99,7 @@ class FHIRFunctionsTests { verify(exactly = 1) { QueueAccess.sendMessage( "${QueueMessage.elrConvertQueueName}-poison", - queueMessage + Base64.getEncoder().encodeToString(queueMessage.toByteArray()) ) mockReportEventService.sendReportProcessingError( ReportStreamEventName.PIPELINE_EXCEPTION, @@ -124,7 +125,7 @@ class FHIRFunctionsTests { verify(exactly = 0) { QueueAccess.sendMessage( "${QueueMessage.elrConvertQueueName}-poison", - queueMessage + Base64.getEncoder().encodeToString(queueMessage.toByteArray()) ) } }