我正在编写一个SpringBoot应用程序,其中包含几个@Configuration类,用于rest API和Kafka消费者/生产者,具体取决于它选择初始化哪个@Profile。
第一个配置类使用REST接口,我添加了这些依赖项,这将启动一个嵌入式Tomcat示例并运行良好。
这里的问题是其他配置文件不应该旋转一个tomcat服务器,它应该只作为一个Kafka消费者。
有没有办法阻止@SpringBootApplication根据概要文件启动Tomcat?
我创建了2个配置类,一个用于Kafka,一个用于rest端点,并为每个配置类添加了@Profile注解。有人能指导我如何从应用中停止spin tomcat吗?
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.0.RELEASE</version>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-batch</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<exclusions>
<exclusion>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jdbc</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
主要用途:
@SpringBootApplication
@Import(value = {RestScanConfiguration.class, KafkaScanConfiguration.class})
public class MainApp {
public static void main(final String[] args) {
SpringApplication.run(MainApp.class, args);
}
}
REST扫描配置类:
@Configuration
@EnableAutoConfiguration
@ComponentScan(basePackages = "package.app.rest")
@Profile("!kafka")
public class RestScanConfiguration {
}
KafkaScan配置类:
@Configuration
@EnableAutoConfiguration(
exclude = {
DataSourceAutoConfiguration.class,
HibernateJpaAutoConfiguration.class,
ElasticsearchDataAutoConfiguration.class
})
@ComponentScan(basePackages = {"package.app.kafka"})
@Profile("kafka")
public class KafkaScanConfiguration {
}
有人能给我指点一下吗?
如何停止在Kafka消费者/生产者配置文件中旋转tomcat服务器。任何帮助都将不胜感激。
1条答案
按热度按时间w6lpcovy1#
首先,您必须在starter类中禁用嵌入式Tomcat的自动配置,以避免部署Tomcat:
然后将以下属性添加到您的Kafka配置(非Rest配置文件):
现在,您已经禁用了集成Tomcat在Spring Boot 时的自动部署。现在,将以下配置添加到您的Rest配置文件以启用Tomcat(仅适用于此配置文件):
之后你动态地配置了你的Kafka,你可以在Control enabling/disabling Kafka consumers in Spring Boot中找到一个解决方案