如何配置 Spring 集成?
How to configure Spring Integration?
我有spring-整合-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/integration" //etc. >
<channel id="inputChannel"/>
<channel id="outputChannel">
<queue capacity="10"/>
</channel>
<service-activator input-channel="inputChannel"
output-channel="outputChannel"
ref="gmailWorker"
method="getGmailMessage"/>
<beans:bean id="gmailWorker" class="GmailWorker"/>
配置:
@Configuration
@ImportResource("classpath:spring-integration-config.xml")
public class PropertiesConfig {
}
GmailWorker:
public class GmailWorker{
public static Message getGmailMessage(Gmail service,String messageId) throws IOException {
Message gmailMessage = service.users().messages().get("me", messageId).execute();
return gmailMessage;
}
}
现在我不使用 InputChannel bean。但是我的应用程序没有部署在 tomcat 上,日志为:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.integration.config.ConsumerEndpointFactoryBean#0':
Cannot resolve reference to bean 'org.springframework.integration.config.ServiceActivatorFactoryBean#0' while setting bean property 'handler';
nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.integration.config.ServiceActivatorFactoryBean#0':
FactoryBean threw exception on object creation; nested exception is java.lang.IllegalArgumentException:
Target object of type [class GmailWorker] has no eligible methods for handling Messages.
如何配置Spring集成?以及如何在应用程序中使用inputChannel
?
您的 POJO 方法看起来不适合 Spring 集成运行时方法调用引擎。
任何 Spring 集成组件处理 Message
object,它具有 headers
和 payload
属性。
当它调用 POJO 方法时,它期望该方法有一些受限制的参数集:
- 整个
Message
- 任何其他可以被视为
payload
的类型,如果在这件事上有一些适当的 converter
。
@Header
作为 MessageHeaders
中某些 header 的请求
Map<String, Object> as whole set of
MessageHeaders`
- 如果你想处理
payload
和一些 header,你可以用 @Payload
、@Headers
等标记参数。
更多信息是 here。
我有spring-整合-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/integration" //etc. >
<channel id="inputChannel"/>
<channel id="outputChannel">
<queue capacity="10"/>
</channel>
<service-activator input-channel="inputChannel"
output-channel="outputChannel"
ref="gmailWorker"
method="getGmailMessage"/>
<beans:bean id="gmailWorker" class="GmailWorker"/>
配置:
@Configuration
@ImportResource("classpath:spring-integration-config.xml")
public class PropertiesConfig {
}
GmailWorker:
public class GmailWorker{
public static Message getGmailMessage(Gmail service,String messageId) throws IOException {
Message gmailMessage = service.users().messages().get("me", messageId).execute();
return gmailMessage;
}
}
现在我不使用 InputChannel bean。但是我的应用程序没有部署在 tomcat 上,日志为:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.integration.config.ConsumerEndpointFactoryBean#0':
Cannot resolve reference to bean 'org.springframework.integration.config.ServiceActivatorFactoryBean#0' while setting bean property 'handler';
nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.integration.config.ServiceActivatorFactoryBean#0':
FactoryBean threw exception on object creation; nested exception is java.lang.IllegalArgumentException:
Target object of type [class GmailWorker] has no eligible methods for handling Messages.
如何配置Spring集成?以及如何在应用程序中使用inputChannel
?
您的 POJO 方法看起来不适合 Spring 集成运行时方法调用引擎。
任何 Spring 集成组件处理 Message
object,它具有 headers
和 payload
属性。
当它调用 POJO 方法时,它期望该方法有一些受限制的参数集:
- 整个
Message
- 任何其他可以被视为
payload
的类型,如果在这件事上有一些适当的converter
。 @Header
作为MessageHeaders
中某些 header 的请求
Map<String, Object> as whole set of
MessageHeaders`- 如果你想处理
payload
和一些 header,你可以用@Payload
、@Headers
等标记参数。
更多信息是 here。