Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SQS所有消息进入死信队列_Java_Kotlin_Terraform_Amazon Sqs_Micronaut - Fatal编程技术网

Java SQS所有消息进入死信队列

Java SQS所有消息进入死信队列,java,kotlin,terraform,amazon-sqs,micronaut,Java,Kotlin,Terraform,Amazon Sqs,Micronaut,我已经使用terraform配置了一个SQS队列和一个额外的死信队列 resource "aws_sqs_queue" "sqs_deadletter" { name = "worker-dead-letter" } resource "aws_sqs_queue" "sqs" { name = "worker" /* TODO: If I enable this a

我已经使用terraform配置了一个SQS队列和一个额外的死信队列

resource "aws_sqs_queue" "sqs_deadletter" {
  name = "worker-dead-letter"
}

resource "aws_sqs_queue" "sqs" {
  name = "worker"
/* TODO: If I enable this all messages goes to the dead letter queue
  redrive_policy = jsonencode({
    deadLetterTargetArn = aws_sqs_queue.sqs_deadletter.arn
    maxReceiveCount = 4
  })
*/
}

resource "aws_lambda_event_source_mapping" "sqs" {
  event_source_arn = aws_sqs_queue.sqs.arn
  function_name = aws_lambda_function.worker.arn
  enabled = true
  batch_size = var.batch_size
}
我使用下面的处理程序来处理我的消息

@Introspected
class LegacyToModernRequestHandler : MicronautRequestHandler<SQSEvent, Unit>() {
    private val logger = KotlinLogging.logger {}

    override fun execute(input: SQSEvent) {
        input.records.forEach {
            handle(it)
        }
    }

    private fun handle(message: SQSMessage) {
        val key = message.body
        logger.info { "LegacyToModernRequestHandler($key)" }
    }
}
@内省
类LegacyToModerRequestHandler:MicronautRequestHandler(){
private val logger=KotlinLogging.logger{}
覆盖乐趣执行(输入:SQSEvent){
input.records.forEach{
处理(it)
}
}
私人娱乐手柄(信息:SQSMessage){
val key=message.body
logger.info{“LegacyToModernRequestHandler($key)”}
}
}

但我所有的信息都会传到DLQ。如何指示成功处理,以避免发生这种情况?

如果未使用自动确认模式,则必须明确确认消息,以便成功处理该消息。否则它将转到DLQ。您能展示一下您是如何配置SQS队列的吗?

如果您没有使用自动确认模式,则必须明确确认消息,以便成功处理它。否则它将转到DLQ。您可以展示一下您是如何配置SQS队列的吗?

我已经更新了我的问题。您在处理消息后是否发送确认信息?我正在处理它,正如您在上面的代码中看到的那样。除此之外,我没有做任何事情。我已经更新了我的问题。你在处理邮件后是否发送确认?正如你在上面的代码中看到的,我正在处理它。除此之外什么都不做。