diff --git a/spring-integration-jdbc/src/main/java/org/springframework/integration/jdbc/JdbcMessageStore.java b/spring-integration-jdbc/src/main/java/org/springframework/integration/jdbc/JdbcMessageStore.java index a34214e3d6..cd6afe18e0 100644 --- a/spring-integration-jdbc/src/main/java/org/springframework/integration/jdbc/JdbcMessageStore.java +++ b/spring-integration-jdbc/src/main/java/org/springframework/integration/jdbc/JdbcMessageStore.java @@ -485,29 +485,28 @@ public class JdbcMessageStore extends AbstractMessageGroupStore implements Messa }); } - public Message pollMessageFromGroup(Object groupId) { + public Message pollMessageFromGroup(final Object groupId) { String key = getKey(groupId); - UUID messageId = jdbcTemplate.query(getQuery(LIST_MESSAGEIDS_BY_GROUP_KEY), new Object[] { key, region }, - new ResultSetExtractor() { - public UUID extractData(ResultSet rs) + return jdbcTemplate.query(getQuery(LIST_MESSAGEIDS_BY_GROUP_KEY), new Object[] { key, region }, + new ResultSetExtractor>() { + public Message extractData(ResultSet rs) throws SQLException, DataAccessException { - if (rs.next()) { + while (rs.next()) { UUID uuid = UUID.fromString(rs.getString(1)); - return uuid; + if (uuid != null){ + Message message = getMessage(uuid); + if (message != null){ + removeMessageFromGroup(groupId, message); + return message; + } + } } return null; } }); - - if (messageId != null){ - Message message = this.getMessage(messageId); - this.removeMessageFromGroup(groupId, message); - return message; - } - return null; } - + private List getMessageIdsForGroup(Object groupId){ String key = getKey(groupId);