private MessageBuilder<?> createAndAddBuilder(Object messageOrPayload, boolean clearExistingValues) { MessageBuilder<?> builder = null; if (messageOrPayload instanceof MessageBuilder) { builder = (MessageBuilder<?>) messageOrPayload; } else if (messageOrPayload instanceof Message) { builder = MessageBuilder.fromMessage((Message<?>) messageOrPayload); } else { builder = MessageBuilder.withPayload(messageOrPayload); } synchronized (this.builders) { if (clearExistingValues) { this.builders.clear(); } this.builders.add(builder); } return builder; }
@Override public final void handleRequestMessage(Message<?> message, ReplyMessageHolder replyHolder) { if (!(message.getPayload() instanceof Serializable)) { throw new MessageHandlingException(message, this.getClass().getName() + " expects a Serializable payload type " + "but encountered [" + message.getPayload().getClass().getName() + "]"); } Message<?> requestMessage = MessageBuilder.fromMessage(message).build(); try { Message<?> reply = this.handlerProxy.handle(requestMessage); if (reply != null) { replyHolder.set(reply); } } catch (RemoteAccessException e) { throw new MessageHandlingException(message, "unable to handle message remotely", e); } }
protected final void sendReply(Message<?> message, MessageChannel defaultReplyChannel) { MessageChannel replyChannel = this.outputChannel; if (replyChannel == null) { replyChannel = this.resolveReplyChannelFromMessage(message); if (replyChannel == null) { replyChannel = defaultReplyChannel; } } if (replyChannel != null) { if (defaultReplyChannel != null && !defaultReplyChannel.equals(replyChannel)) { message = MessageBuilder.fromMessage(message) .setHeaderIfAbsent(MessageHeaders.REPLY_CHANNEL, defaultReplyChannel) .build(); } if (!this.channelTemplate.send(message, replyChannel)) { throw new MessageDeliveryException(message, "failed to send reply Message"); } } else if (logger.isWarnEnabled()) { logger.warn("unable to determine reply target for aggregation result: " + message); } }
return message; return MessageBuilder.fromMessage(message).copyHeadersIfAbsent(headers).build();
MessageBuilder<?> builder = MessageBuilder.fromMessage(message); for (Object keyObject : propertiesToSet.keySet()) { String key = (String) keyObject; MessageBuilder<?> builder = MessageBuilder.fromMessage(message); for (Object key : attributesToSet.keySet()) { if (!(key instanceof String)) {
public boolean dispatch(Message<?> message) { boolean dispatched = false; int sequenceNumber = 1; List<MessageHandler> handlers = this.getHandlers(); int sequenceSize = handlers.size(); for (final MessageHandler handler : handlers) { final Message<?> messageToSend = (!this.applySequence) ? message : MessageBuilder.fromMessage(message) .setSequenceNumber(sequenceNumber++) .setSequenceSize(sequenceSize) .setCorrelationId(message.getHeaders().getId()) .setHeader(MessageHeaders.ID, UUID.randomUUID()) .build(); if (this.taskExecutor != null) { this.taskExecutor.execute(new Runnable() { public void run() { invokeHandler(handler, messageToSend); } }); dispatched = true; } else { boolean success = this.invokeHandler(handler, messageToSend); dispatched = (success || dispatched); } } return dispatched; }
private Message<?> doSendAndReceive(Message<?> request, MessageChannel channel) { Object originalReplyChannelHeader = request.getHeaders().getReplyChannel(); Object originalErrorChannelHeader = request.getHeaders().getErrorChannel(); TemporaryReplyChannel replyChannel = new TemporaryReplyChannel(this.receiveTimeout); request = MessageBuilder.fromMessage(request) .setReplyChannel(replyChannel) .setErrorChannel(replyChannel) .build(); if (!this.doSend(request, channel)) { throw new MessageDeliveryException(request, "failed to send message to channel"); } Message<?> reply = this.doReceive(replyChannel); if (reply != null) { reply = MessageBuilder.fromMessage(reply) .setHeader(MessageHeaders.REPLY_CHANNEL, originalReplyChannelHeader) .setHeader(MessageHeaders.ERROR_CHANNEL, originalErrorChannelHeader) .build(); } return reply; }
for (MessageChannel channel : results) { final Message<?> messageToSend = (!this.applySequence) ? message : MessageBuilder.fromMessage(message) .setSequenceNumber(sequenceNumber++) .setSequenceSize(sequenceSize)
@Override protected void processBarrier(MessageBarrier<List<Message<?>>> barrier) { if (!barrier.isComplete() && !CollectionUtils.isEmpty(barrier.getMessages())) { if (this.completionStrategy.isComplete(barrier.getMessages())) { barrier.setComplete(); } } if (barrier.isComplete()) { this.removeBarrier(barrier.getCorrelationKey()); Message<?> result = this.aggregateMessages(barrier.getMessages()); if (result != null) { if (result.getHeaders().getCorrelationId() == null) { result = MessageBuilder.fromMessage(result) .setCorrelationId(barrier.getCorrelationKey()) .build(); } this.sendReply(result, this.resolveReplyChannelFromMessage(barrier.getMessages().get(0))); } } }