首页 > 解决方案 > Spring @SqsListener - 获取队列名称

问题描述

我知道使用 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

标签: amazon-sqsaws-java-sdkspring-messaging

解决方案


您必须使用此标头:

@Header("LogicalResourceId") receivedQueue: String

或者lookupDestination,如果LogicalResourceId作为 ARN 提供。


推荐阅读