diff --git a/spring-messaging/src/test/java/org/springframework/messaging/simp/stomp/StompBrokerRelayMessageHandlerIntegrationTests.java b/spring-messaging/src/test/java/org/springframework/messaging/simp/stomp/StompBrokerRelayMessageHandlerIntegrationTests.java index 5aeaa2f3c0..fe5cb06ada 100644 --- a/spring-messaging/src/test/java/org/springframework/messaging/simp/stomp/StompBrokerRelayMessageHandlerIntegrationTests.java +++ b/spring-messaging/src/test/java/org/springframework/messaging/simp/stomp/StompBrokerRelayMessageHandlerIntegrationTests.java @@ -282,12 +282,29 @@ public class StompBrokerRelayMessageHandlerIntegrationTests { } public void expectMessages(MessageExchange... messageExchanges) throws InterruptedException { - for (MessageExchange exchange : messageExchanges) { + + List expectedMessages = + new ArrayList(Arrays.asList(messageExchanges)); + + while (expectedMessages.size() > 0) { Message message = this.queue.poll(10000, TimeUnit.MILLISECONDS); - assertNotNull("Timed out waiting for: " + exchange, message); - assertTrue("Expected: " + exchange + " but got: " + message, exchange.matchMessage(message)); + assertNotNull("Timed out waiting for messages, expected [" + expectedMessages + "]", message); + + MessageExchange match = findMatch(expectedMessages, message); + assertNotNull("Unexpected message=" + message + ", expected [" + expectedMessages + "]", match); + + expectedMessages.remove(match); } } + + private MessageExchange findMatch(List expectedMessages, Message message) { + for (MessageExchange exchange : expectedMessages) { + if (exchange.matchMessage(message)) { + return exchange; + } + } + return null; + } } /**