Spring 与 Spring 集成 引导 运行 作为 war
Spring Integration with Spring Boot run as war
我正在尝试 运行 我的 Spring 集成应用程序 Spring 在 tomcat 中启动(所以我将其打包为 war)。
我能够成功部署 war 但它没有侦听给定队列上的消息。当我将它作为 IDE 中的应用程序启动时,一切正常。
有人可以指出我在以下代码中遗漏了什么,或者是否应该以不同的方式部署?
@Configuration
@SpringBootApplication
@IntegrationComponentScan
@EnableAutoConfiguration
@EnableIntegration
public class SpringIntegrationApplication {
public static void main(String[] args) {
SpringApplication.run(SpringIntegrationApplication .class, args);
}
@Autowired
private ActiveMQConnectionFactory activeMQConnectionFactory;
@Bean
public IntegrationFlow jmsInboundFlow() {
return IntegrationFlows.from(
Jms.inboundAdapter(this.activeMQConnectionFactory)
.configureJmsTemplate(t -> t.deliveryPersistent(true)/*.jmsMessageConverter(myMessageConverter())*/)
.destination("testQueue"), // name of the queue
e -> e.poller( Pollers.fixedDelay(10000).maxMessagesPerPoll(20) )
)
.enrich(e -> e
.requestPayload(Message::getPayload)
.shouldClonePayload(false)
.<Map<String, String>>headerFunction("originalMessage", m -> m.getPayload(), true)
)
.channel("entrypoint")
.get();
}
@Router(inputChannel="entrypoint")
public String route(@SuppressWarnings("rawtypes") Message message) {
if (isErrorMessage) {
return "done.input";
}
}
而这个 gradle (build.gradle) 将它打包:
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'war'
apply plugin: 'maven-publish'
version = '1.0-SNAPSHOT'
sourceCompatibility = 1.8
targetCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
compile(
[group: 'org.springframework.integration', name: 'spring-integration-feed', version: springframeworkVersion],
'org.springframework.boot:spring-boot-starter-web:1.3.3.RELEASE',
'org.springframework.integration:spring-integration-core:4.2.5.RELEASE',
'org.springframework.integration:spring-integration-flow:1.0.0.RELEASE',
'org.springframework.integration:spring-integration-java-dsl:1.1.2.RELEASE',
'org.springframework.integration:spring-integration-http:4.2.5.RELEASE',
'org.springframework.integration:spring-integration-jms:4.2.5.RELEASE',
'org.springframework.integration:spring-integration-jdbc:4.2.5.RELEASE',
[group: 'log4j', name: 'log4j', version: '1.2.17'],
[group: 'org.slf4j', name: 'slf4j-log4j12', version: '1.7.5'],
[group: 'javax.servlet', name: 'jstl', version: '1.2'],
[group: 'org.apache.activemq', name: 'activemq-amqp', version: '5.13.3'],
'javax:javaee-api:7.0'
)
//If more required then
//http://mvnrepository.com/artifact/org.springframework.integration
testCompile (
[group: 'junit', name: 'junit', version: '4.11'],
[group: 'org.springframework.boot', name: 'spring-boot-starter-test', version: '1.3.5.RELEASE']
)
}
非常感谢任何意见。
不知道你的申请中有没有SpringBootServletInitializer
:http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto-create-a-deployable-war-file.
否则,请在 Tomcat 中启动应用程序后共享 org.springframework
的 DEBUG 日志。
我正在尝试 运行 我的 Spring 集成应用程序 Spring 在 tomcat 中启动(所以我将其打包为 war)。
我能够成功部署 war 但它没有侦听给定队列上的消息。当我将它作为 IDE 中的应用程序启动时,一切正常。 有人可以指出我在以下代码中遗漏了什么,或者是否应该以不同的方式部署?
@Configuration
@SpringBootApplication
@IntegrationComponentScan
@EnableAutoConfiguration
@EnableIntegration
public class SpringIntegrationApplication {
public static void main(String[] args) {
SpringApplication.run(SpringIntegrationApplication .class, args);
}
@Autowired
private ActiveMQConnectionFactory activeMQConnectionFactory;
@Bean
public IntegrationFlow jmsInboundFlow() {
return IntegrationFlows.from(
Jms.inboundAdapter(this.activeMQConnectionFactory)
.configureJmsTemplate(t -> t.deliveryPersistent(true)/*.jmsMessageConverter(myMessageConverter())*/)
.destination("testQueue"), // name of the queue
e -> e.poller( Pollers.fixedDelay(10000).maxMessagesPerPoll(20) )
)
.enrich(e -> e
.requestPayload(Message::getPayload)
.shouldClonePayload(false)
.<Map<String, String>>headerFunction("originalMessage", m -> m.getPayload(), true)
)
.channel("entrypoint")
.get();
}
@Router(inputChannel="entrypoint")
public String route(@SuppressWarnings("rawtypes") Message message) {
if (isErrorMessage) {
return "done.input";
}
}
而这个 gradle (build.gradle) 将它打包:
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'war'
apply plugin: 'maven-publish'
version = '1.0-SNAPSHOT'
sourceCompatibility = 1.8
targetCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
compile(
[group: 'org.springframework.integration', name: 'spring-integration-feed', version: springframeworkVersion],
'org.springframework.boot:spring-boot-starter-web:1.3.3.RELEASE',
'org.springframework.integration:spring-integration-core:4.2.5.RELEASE',
'org.springframework.integration:spring-integration-flow:1.0.0.RELEASE',
'org.springframework.integration:spring-integration-java-dsl:1.1.2.RELEASE',
'org.springframework.integration:spring-integration-http:4.2.5.RELEASE',
'org.springframework.integration:spring-integration-jms:4.2.5.RELEASE',
'org.springframework.integration:spring-integration-jdbc:4.2.5.RELEASE',
[group: 'log4j', name: 'log4j', version: '1.2.17'],
[group: 'org.slf4j', name: 'slf4j-log4j12', version: '1.7.5'],
[group: 'javax.servlet', name: 'jstl', version: '1.2'],
[group: 'org.apache.activemq', name: 'activemq-amqp', version: '5.13.3'],
'javax:javaee-api:7.0'
)
//If more required then
//http://mvnrepository.com/artifact/org.springframework.integration
testCompile (
[group: 'junit', name: 'junit', version: '4.11'],
[group: 'org.springframework.boot', name: 'spring-boot-starter-test', version: '1.3.5.RELEASE']
)
}
非常感谢任何意见。
不知道你的申请中有没有SpringBootServletInitializer
:http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto-create-a-deployable-war-file.
否则,请在 Tomcat 中启动应用程序后共享 org.springframework
的 DEBUG 日志。