java - 在 Transformer 中获取消息头 - Spring 集成

标签 java spring spring-integration

我正在使用控制总线和入站 channel 适配器来读取 csv 文件的内容。用例是我应该能够检索在 Transformer 内启动入站适配器时使用的 header 。

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

最佳答案

控制总线消息只是启动适配器。它的 header 不会传输到适配器生成的任何消息。您需要添加<int:header-enricher/>在适配器和转换器之间添加 header 到这些消息。

关于java - 在 Transformer 中获取消息头 - Spring 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45540287/

相关文章:

java - 处理 RecyclerView 中的多种类型 View 单击

java - 超时动态 HTTP 出站网关请求工厂

linux - spring集成sftp入站 channel 适配器和临时文件问题

spring - 在 Spring 中以编程方式将 QueueChannel 桥接到 MessageChannel

hibernate - Spring + Hibernate session 管理

java - Spring Cloud 流: dynamic output channel strange behavior

java - 无法理解/定位 Octave 到 Java 数组转换所需的 Jar 文件(JIDT 包)

java - HeidelTime:语言参数被指定为 NULL

java - 使用流如何创建摘要对象

java - Spring Cloud Stream 与 RabbitMQ 的连接