我工作的一個春天啓動應用程序,從SQS採用郵件作爲對這個職位https://aws.amazon.com/blogs/developer/using-amazon-sqs-with-spring-boot-and-spring-jms/爲什麼我的SQS的Spring Boot應用程序不顯示JMSHealthIndicator?
描述當我訪問在localhost:8081/health
內置的彈簧引導健康端點我希望看到有關JMS代理的一些信息Spring Boot docs表示存在自動配置的健康指示符,其被配置爲「適當時」,其中之一是JmsHealthIndicator
。相反,我只看到狀態和磁盤空間{"status":"UP","diskSpace":{"status":"UP","total":31572619264,"free":24611381248,"threshold":10485760}}
有誰知道爲什麼我們在健康端點上看不到有關JMS的任何信息?該應用程序可以很好地從SQS中讀取數據,但由於它是在Kubernetes中託管的,因此我想添加一個準備就緒/活性探針,並在檢查中包含JMS。
有關信息我們與@EnableJms
JMS配置如下:
import javax.jms.Session;
import com.amazon.sqs.javamessaging.SQSConnectionFactory;
import com.amazonaws.auth.AWSCredentialsProvider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.aws.core.region.RegionProvider;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jms.annotation.EnableJms;
import org.springframework.jms.config.DefaultJmsListenerContainerFactory;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.support.destination.DynamicDestinationResolver;
@Configuration
@EnableJms
public class JmsConfig {
private static final Logger LOGGER = LoggerFactory.getLogger(JmsConfig.class);
private static final String LOWER_UPPER_CONCURRENCY = "3-10";
private final SQSConnectionFactory connectionFactory;
public JmsConfig(RegionProvider regionProvider, AWSCredentialsProvider awsCredentialsProvider) {
this.connectionFactory = SQSConnectionFactory.builder()
.withRegion(regionProvider.getRegion())
.withAWSCredentialsProvider(awsCredentialsProvider)
.build();
LOGGER.info("Loading JmsConfig");
}
@Bean
public DefaultJmsListenerContainerFactory jmsListenerContainerFactory() {
DefaultJmsListenerContainerFactory factory =
new DefaultJmsListenerContainerFactory();
factory.setConnectionFactory(this.connectionFactory);
factory.setDestinationResolver(new DynamicDestinationResolver());
factory.setConcurrency(LOWER_UPPER_CONCURRENCY);
factory.setSessionAcknowledgeMode(Session.CLIENT_ACKNOWLEDGE);
return factory;
}
@Bean
public JmsTemplate defaultJmsTemplate() {
return new JmsTemplate(this.connectionFactory);
}
}
然後,我們還標註有@JmsListener(destination = "${sqs.input.queue}")
編輯的方法:請注意,我已經嘗試添加下列到application.properties
management.health.defaults.enabled=true
management.health.jms.enabled=true
endpoints.health.sensitive=false
謝謝, Leanne。
謝謝你的建議,但我們已經有了這樣的設置,這只是我不包括在這個問題中。我們現在有它的工作,所以我會發布答案:) – Leanne182x