【发布时间】:2017-08-07 06:02:20
【问题描述】:
我正在使用控制总线和入站通道适配器来读取 csv 文件的内容。用例是我应该能够检索在 Transformer 内启动入站适配器时使用的标头。
1) Spring-config.xml
<int:channel id="channel">
<int:queue capacity="10" />
</int:channel>
<file:inbound-channel-adapter id="filesIn"
auto-startup="false" directory="file:D:/sample" filename-pattern="*.csv" >
<int:poller id="poller" fixed-delay="500" />
</file:inbound-channel-adapter>
<int:outbound-channel-adapter auto-startup="true" id="dataout" ref="FileToOutputChannel" method="processContent"/>
<int:transformer id="filetoPojoTransformer"
input-channel="filesIn" method="processContent"
ref="FileToPOJOTransformer" output-channel="dataout"/>
<bean id="FileToPOJOTransformer" class="com.process.FileToPOJOTransformer">
</bean>
<bean id="FileToOutputChannel" class="com.process.FileToOutputChannel">
</bean>
2) FileToPOJOTransformer
public class FileToPOJOTransformer {
public Message<String> processContent(Message<String> msfile)
{
System.out.println("This is sample"+msfile.getHeaders());
// Output here..headers={id=541b6b09-0ace-238b-a30d-25d5a347b93e, timestamp=1502100632757}]
return msfile;
}
}
3) 调用类
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("HelloWorld.xml");
DirectChannel controlchannel = (DirectChannel) context.getBean("controlchannel");
Message<String> message = MessageBuilder.withPayload("@'filesIn.adapter'.start()")
.setHeader("Message_Header1", "Message_Header1_Value")
.setHeader("Message_Header2", "Message_Header2_Value")
.build();
controlchannel.send(message);
}
我需要在 FileToPOJOTransformer 的 ProcessContent 方法中包含 Message_Header1。
【问题讨论】:
-
Message<T>有一个getHeaders方法。 -
我投票结束这个问题,因为作者需要阅读 Javadoc。
-
Abhijit Sarkar,我知道 getHeaders() 方法。这里的问题是我在 FileToPOJOTransformer 中获取的标题不是 Message_Header1 和 Message_Header1。更新了问题以便更好地理解。
标签: java spring spring-integration