В Spring Integration вы можете использовать Splitter , чтобы разделить ваши сообщения так, чтобы они не превышали, например. 4MB.
<int:splitter id="splitter"
ref="splitterBean"
method="split"
input-channel="inputChannel"
output-channel="outputChannel" />
<beans:bean id="splitterBean" class="your.MessageSplitter"/>
или с помощью аннотации @Splitter
.
Когда сообщение поступает в разделитель, вы должны применить логику разделения внутри your.MessageSplitter
и вернуть List<YourMessage>
:
public class MessageSplitter {
public List<YourMessage> split( HugeMessage hugeMessage ) {
List nicelySizedMessages = new ArrayList<YourMessage>();
// splitting logic... that would parse "hugeMessage" and split it to
// nicelySizedMessages.add( ... ) "YourMessage"s
return nicelySizedMessages;
}
}
Spring Integration возьмет этот список и перенаправит по порядку YourMessage
s из списка.