Spring @SqsListener - 获取队列名称

Spring @SqsListener - get queue name

我知道使用 Springs @SqsListener 注释我可以用同一个侦听器侦听多个队列。根据文档:

public @interface SqsListener {

    /**
     * List of queues. Queues can be defined by their logical/physical name or URL.
     * @return list of queues
     */
    String[] value() default {};

所以 Kotlin 中的示例可能如下所示:

@SqsListener(value = ["queue1", "queue2"], deletionPolicy = SqsMessageDeletionPolicy.ALWAYS)
@MessageMapping
fun testListeningToMultipleQueues(@Payload myPayloadObject: MyPayloadObject, @Header("myCustomHeader") myCustomHeader: String) {
    logger.info("Message received, but not sure from which queue")
}

testListeningToMultipleQueues 方法中是否有某种方法可以知道消息是来自 queue1 还是 queue2

你必须使用这个 header:

@Header("LogicalResourceId") receivedQueue: String

或者 lookupDestination 如果 LogicalResourceId 作为 ARN。