Сообщение SQS с номером MessageAttribute не получено Spring JMS Listener - PullRequest
1 голос
/ 08 апреля 2019

Ниже мои настройки:

  • AWS SNS Topic
  • Очередь AWS SQS, подписанная на тему с включенной «Необработанной доставкой сообщений»
  • Приложение загрузки Spring с JmsListener прослушиванием в очереди SQS

Версия:

  • amazon-sqs-java-messaging-lib 1.0.4
  • spring-boot 1.4.2.RELEASE
  • spring-jms: 4.3.4. РЕЛИЗ
  • весна-облако: 1.1.8. РЕЛИЗ

Когда я публикую сообщение в теме SNS (через консоль AWS) с Number MessageAttribute, оно достигает SQS. Однако мой код прослушивателя JMS не получает сообщение, т. Е. Код вообще не запускается при получении сообщения с Number MessageAttribute из SQS.

Пример:

  1. SQS сообщение получено без Number MessageAttribute ==> триггеров JmsListener

enter image description here

  1. Сообщение SQS, полученное с помощью Number MessageAttribute ==> делает НЕ триггер JmsListener

enter image description here Код:

@JmsListener(destination = "sqs.queue.name")
public void processAccountMessage(TextMessage msg) throws JMSException {
    logger.info("msg: {}", msg);
}

и JmsListenerContainerFactory код, как показано ниже:

@Configuration
@EnableJms
public class MessageConfig {

@Inject
private ClientFactory<AmazonSQS> sqsClientFactory;

@Value("${aws.region}")
private String awsRegion;

    @Bean
    public DefaultJmsListenerContainerFactory jmsListenerContainerFactory() throws Exception {
        DefaultJmsListenerContainerFactory factory =
                new DefaultJmsListenerContainerFactory();
        factory.setConnectionFactory(new SQSConnectionFactory(new ProviderConfiguration(), this.sqsClientFactory.getClient(AmazonSQS.class, this.awsRegion)));
        factory.setDestinationResolver(new DynamicDestinationResolver());
        factory.setConcurrency("1");
        factory.setSessionAcknowledgeMode(Session.CLIENT_ACKNOWLEDGE);
        return factory;
    }
...