The method {@link #toMap()} returns a copy of the underlying headers. It canbe used to prepare multiple messages from the same {@code MessageHeaderAccessor}instance:
MessageHeaderAccessor accessor = new MessageHeaderAccessor(); MessageBuilder builder = MessageBuilder.withPayload("payload").setHeaders(accessor); accessor.setHeader("foo", "bar1"); Message message1 = builder.build(); accessor.setHeader("foo", "bar2"); Message message2 = builder.build(); accessor.setHeader("foo", "bar3"); Message message3 = builder.build();
However note that with the above style, the header accessor is shared and cannot be re-obtained later on. Alternatively it is also possible to create one {@code MessageHeaderAccessor} per message:
MessageHeaderAccessor accessor1 = new MessageHeaderAccessor(); accessor.set("foo", "bar1"); Message message1 = MessageBuilder.createMessage("payload", accessor1.getMessageHeaders()); MessageHeaderAccessor accessor2 = new MessageHeaderAccessor(); accessor.set("foo", "bar2"); Message message2 = MessageBuilder.createMessage("payload", accessor2.getMessageHeaders()); MessageHeaderAccessor accessor3 = new MessageHeaderAccessor(); accessor.set("foo", "bar3"); Message message3 = MessageBuilder.createMessage("payload", accessor3.getMessageHeaders());
Note that the above examples aim to demonstrate the general idea of using header accessors. The most likely usage however is through sub-classes. @author Rossen Stoyanchev @author Juergen Hoeller @since 4.0
|
|
|
|
|
|