AUTO_ACKNOWLEDGE и CLIENT_ACKNOWLEDGE в JMS

В настоящее время я использую asticMQ для своей локальной среды, чтобы смоделировать SQS. Я заметил одну вещь при создании производителя и потребителя для SQS, что при создании Session нам нужно определить тип подтверждения.

    sqsSession = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

В моем проекте для продюсера при создании сессии я определил его как AUTO_ACKNOWLEDGE,

Но когда я определяю тот же тип в потребителе, он не может извлечь данные из очереди, а также сообщает об ошибке:

Exception in thread "main" java.lang.NoSuchMethodError: com.amazonaws.services.sqs.AmazonSQS.deleteMessage(Lcom/amazonaws/services/sqs/model/DeleteMessageRequest;)V
    at com.amazon.sqs.javamessaging.AmazonSQSMessagingClientWrapper.deleteMessage(AmazonSQSMessagingClientWrapper.java:127)
    at com.amazon.sqs.javamessaging.acknowledge.AutoAcknowledger.acknowledge(AutoAcknowledger.java:33)
    at com.amazon.sqs.javamessaging.acknowledge.AutoAcknowledger.notifyMessageReceived(AutoAcknowledger.java:42)
    at com.amazon.sqs.javamessaging.SQSMessageConsumerPrefetch.messageHandler(SQSMessageConsumerPrefetch.java:477)
    at com.amazon.sqs.javamessaging.SQSMessageConsumerPrefetch.receive(SQSMessageConsumerPrefetch.java:410)
    at com.amazon.sqs.javamessaging.SQSMessageConsumer.receive(SQSMessageConsumer.java:157)
    at com.abc..message.SettlementReleaseConsumer.receiveMessage(Consumer.java:45)
    at com.abc.message.Consumer.main(Consumer.java:32)

Кто-нибудь может объяснить, что здесь происходит?

Еще одна вещь, когда я изменил свой поток создания сеанса в Consumer с AUTO на CLIENT и позже вызвал message.acknowledge(). Работает отлично.

0 ответов

Другие вопросы по тегам