从单个SQSListener监听多个AWS SQS

时间:2019-11-15 12:40:55

标签: spring-boot spring-cloud amazon-sqs

我有一个springboot应用程序,其中sqslistener配置为侦听一个队列,如下所示-

@SqsListener(value="${sqs.name}", deletionPolicy=SqsMessageDeletionPolicy.NEVER)
public void listen(Request request, Acknowledgment ack) {
logger.info("Message received {}",request);
    try {
        ack.acknowledge().get();
        logger.info("Deleted message"); 
    } catch (InterruptedException | ExecutionException e) {
        logger.error("Failed to delete message from the queue");
    }
    logger.info("Message processed.");
}

但是,我必须更改此设置才能侦听2个不同的队列。首先,侦听器应侦听第一个队列,如果未找到消息,则应侦听第二个队列。

是否可以用同一听众来做? 如果没有,那么实现此目的的任何想法都是有帮助的。

1 个答案:

答案 0 :(得分:0)

是否可以用同一听众来做?如果没有,那么实现此目的的任何想法都是有帮助的。

否,对于两个不同的队列,不可能有相同的侦听器。

首先,侦听器应侦听第一个队列,如果未找到消息,则应侦听第二个队列。

如果队列中没有消息,则正在监听该队列的侦听器将不会收到任何“输入”,因此您不必担心这种情况。

否则,任何实现此目的的想法都是有帮助的

您必须实现两个不同的侦听器才能分别侦听QueueA和QueueB