public MessageTimeoutException noResponse(String input) { if ("TIMEOUT_TEST_THROW".equals(input)) { throw new MessageTimeoutException("No response received for " + input); } else { return new MessageTimeoutException("No response received for " + input); } }
private Collection<StepExecution> receiveReplies(PollableChannel currentReplyChannel) { @SuppressWarnings("unchecked") Message<Collection<StepExecution>> message = (Message<Collection<StepExecution>>) messagingGateway.receive(currentReplyChannel); if(message == null) { throw new MessageTimeoutException("Timeout occurred before all partitions returned"); } else if (logger.isDebugEnabled()) { logger.debug("Received replies: " + message); } return message.getPayload(); }
/** * Set the value for the given header name only if the header name is not already associated with a value. * * @param headerName The header name. * @param headerValue The header value. * @return this MessageBuilder. */ @Override public MessageBuilder<T> setHeaderIfAbsent(String headerName, Object headerValue) { this.headerAccessor.setHeaderIfAbsent(headerName, headerValue); return this; }
private Integer extractSequenceNumber(Message<?> message) { return new IntegrationMessageHeaderAccessor(message).getSequenceNumber(); } }
@Override public int getSequenceSize() { if (size() == 0) { return 0; } return new IntegrationMessageHeaderAccessor(getOne()).getSequenceSize(); }
public boolean accept(Message<?> message) { Long expirationDate = new IntegrationMessageHeaderAccessor(message).getExpirationDate(); if (expirationDate == null) { return true; } return expirationDate > System.currentTimeMillis(); }
@Override protected Object getSequenceNumber() { return this.headerAccessor.getSequenceNumber(); }
private void handle(int methodNumber, Message<?> message) { int count = 0; for (int callNumber : this.calls) { if (callNumber == methodNumber) { count++; if (count >= this.maxCallsPerMethod) { throw new MessageRejectedException(message, null); } } } this.calls.add(methodNumber); }
@Override @Nullable protected Object getCorrelationId() { return this.headerAccessor.getCorrelationId(); }
@Override protected Object getSequenceSize() { return this.headerAccessor.getSequenceSize(); }
@SuppressWarnings("unchecked") @Override @Nullable protected List<List<Object>> getSequenceDetails() { return (List<List<Object>>) this.headerAccessor.getHeader(IntegrationMessageHeaderAccessor.SEQUENCE_DETAILS); }
@Override public Map<String, Object> getHeaders() { return this.headerAccessor.toMap(); }
/** * Removes all headers provided via array of 'headerPatterns'. As the name suggests the array * may contain simple matching patterns for header names. Supported pattern styles are: * "xxx*", "*xxx", "*xxx*" and "xxx*yyy". * * @param headerPatterns The header patterns. * @return this MessageBuilder. */ @Override public MessageBuilder<T> removeHeaders(String... headerPatterns) { this.headerAccessor.removeHeaders(headerPatterns); return this; }
/** * Specify a list of headers which should be considered as read only * and prohibited from being populated in the message. * @param readOnlyHeaders the list of headers for {@code readOnly} mode. * Defaults to {@link MessageHeaders#ID} and {@link MessageHeaders#TIMESTAMP}. * @return the current {@link MessageBuilder} * @since 4.3.2 * @see IntegrationMessageHeaderAccessor#isReadOnly(String) */ public MessageBuilder<T> readOnlyHeaders(String... readOnlyHeaders) { this.readOnlyHeaders = readOnlyHeaders; this.headerAccessor.setReadOnlyHeaders(readOnlyHeaders); return this; }
/** * Set the value for the given header name. If the provided value is <code>null</code>, the header will be removed. * * @param headerName The header name. * @param headerValue The header value. * @return this MessageBuilder. */ @Override public MessageBuilder<T> setHeader(String headerName, @Nullable Object headerValue) { this.headerAccessor.setHeader(headerName, headerValue); return this; }
@Override public int compare(Message<?> o1, Message<?> o2) { int sequenceNumber1 = new IntegrationMessageHeaderAccessor(o1).getSequenceNumber(); int sequenceNumber2 = new IntegrationMessageHeaderAccessor(o2).getSequenceNumber(); return Integer.compare(sequenceNumber1, sequenceNumber2); }
public void handleMessage(Message<?> message) { this.counter.incrementAndGet(); if (!this.shouldAccept) { throw new MessageRejectedException(message, "intentional test failure"); } }
/** * Return the acknowledgment callback, if present. * @return the callback. * @since 5.0.1 */ @Nullable public AcknowledgmentCallback getAcknowledgmentCallback() { return getHeader(ACKNOWLEDGMENT_CALLBACK, AcknowledgmentCallback.class); }
protected int findLastReleasedSequenceNumber(Object groupId, Collection<Message<?>> partialSequence) { Message<?> lastReleasedMessage = Collections.max(partialSequence, this.sequenceNumberComparator); return new IntegrationMessageHeaderAccessor(lastReleasedMessage).getSequenceNumber(); }
/** * When a message-driven endpoint supports retry implicitly, this * header is incremented for each delivery attempt. * @return the delivery attempt. * @since 5.0.1 */ @Nullable public AtomicInteger getDeliveryAttempt() { return getHeader(DELIVERY_ATTEMPT, AtomicInteger.class); }