Custom Transformers
Now that we have seen out-of-the-box transformers, it is time to see how we can create our own Transformers should the need arise.
Let us look at an example of a TradePublisher
that will produce
Trade
messages with a Trade
POJO as a payload. In the example, the
consumer is not interested in receiving a Java Object but is expecting a
name-value paired map. Can we tweak the Trade
Publisher
to produce the Trade data compatible with
that of a receiver? Yes, we can, but what if we have another receiver that
may come up a few weeks later and be interested in consuming XML-formatted
Trade
messages?
Ideally, the producers should be unaware of consumers or their
requirements. They only talk via an intermediary called
message
. This enables the applications to be decoupled,
too. Our TradePublisher
produces the
Trades in a universal format—a POJO.
Before the message hits the receiver, a transformer needs to be plugged in.
Trade Map Transformer
Because the receiver is expecting name-value pairs of the Trade
data, we need to transform the message into the expected format before
sending to the consumer. One way to do this is to create a class that
transforms the POJO to a name-value pair. The TradeMapTransformer
class defined below
satisfies this requirement:
public class TradeMapTransformer { public Map<String, String> transform(Trade t) { Map<String,String> tradeNameValuesMap = new HashMap<String,String>(); tradeNameValuesMap.put("TRADE_ID", t.getId()); tradeNameValuesMap.put("TRADE_ACCOUNT", ...
Get Just Spring Integration now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.