Reference
Pro Spring Integration - https://www.amazon.com/Pro-Spring-Integration-Experts-Voice-ebook-dp-B005PZ29OA/dp/B005PZ29OA/ref=mt_kindle?_encoding=UTF8&me=&qid=
前篇: https://www.isaacnote.com/2018/11/spring-integration-integrate-with-tomcat.html
下篇:Spring Integration Message Flow - Router
下篇:Spring Integration Message Flow - Router
Enrich Header XML
- Header-enricher 可以改變 msg 的 header, 這裡把 mykey 加入 message
- Transformer 可以透過 @Header 或 @Headers 來取得 headers
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:int="http://www.springframework.org/schema/integration"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/integration
http://www.springframework.org/schema/integration/spring-integration-5.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:component-scan base-package="examples"/>
<int:header-enricher input-channel="input" output-channel="inteceptor">
<int:header name="mykey" value="myval" />
</int:header-enricher>
<int:transformer input-channel="inteceptor" output-channel="output" ref="mapper" />
<int:channel id="inteceptor" />
<int:channel id="input"/>
<int:channel id="output">
<int:queue capacity="10"/>
</int:channel>
</beans>
HeaderEnricherMain
public class HeaderEnricherMain {
public static void main(String[] params) {
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("classpath:HeaderEnricherMain.xml");
MessageChannel input = ctx.getBean("input", MessageChannel.class);
input.send(MessageBuilder.withPayload("test").build());
PollableChannel output = ctx.getBean("output", PollableChannel.class);
System.out.println(output.receive().getHeaders().get("mykey")); // print myval
}
}
Transformer 用 @Header or @Headers 取值
@Component
public class Mapper {
@Transformer
public TextMessage map(Map<String, String> message) {
System.out.println("transform from " + message + " to TextMessage");
return new TextMessage(message.get("text"));
}
@Transformer
public TextMessage map(String message) {
System.out.println("transform from string to TextMessage");
return new TextMessage(message);
}
@Transformer
public TextMessage mapMyKey(@Header("mykey") String myval, @Headers Map<String,String> headerMap, String message) {
System.out.println("headerMap:" + headerMap);
return new TextMessage(myval); // myval
}
}
沒有留言:
張貼留言