/** * Complete the group and remove all its messages. * If the {@link #expireGroupsUponCompletion} is true, then remove group fully. * @param messageGroup the group to clean up. * @param completedMessages The completed messages. Ignored in this implementation. */ @Override protected void afterRelease(MessageGroup messageGroup, Collection<Message<?>> completedMessages) { Object groupId = messageGroup.getGroupId(); MessageGroupStore messageStore = getMessageStore(); messageStore.completeGroup(groupId); if (this.expireGroupsUponCompletion) { remove(messageGroup); } else { if (messageStore instanceof SimpleMessageStore) { ((SimpleMessageStore) messageStore).clearMessageGroup(groupId); } else { messageStore.removeMessagesFromGroup(groupId, messageGroup.getMessages()); } } }
@Test public void testAuction() { MessageHandler scatterGather = this.beanFactory.getBean("scatterGather1.handler", MessageHandler.class); assertThat(scatterGather, instanceOf(ScatterGatherHandler.class)); assertSame(this.beanFactory.getBean("scatterChannel"), TestUtils.getPropertyValue(scatterGather, "scatterChannel")); assertTrue(this.beanFactory.containsBean("scatterGather1.gatherer")); AggregatingMessageHandler gatherer = this.beanFactory.getBean("scatterGather1.gatherer", AggregatingMessageHandler.class); assertSame(gatherer, TestUtils.getPropertyValue(scatterGather, "gatherer")); Object reaper = this.beanFactory.getBean("reaper"); assertSame(gatherer.getMessageStore(), TestUtils.getPropertyValue(reaper, "messageGroupStore")); assertTrue(TestUtils.getPropertyValue(scatterGather, "requiresReply", Boolean.class)); }
/** * Complete the group and remove all its messages. * If the {@link #expireGroupsUponCompletion} is true, then remove group fully. * @param messageGroup the group to clean up. * @param completedMessages The completed messages. Ignored in this implementation. */ @Override protected void afterRelease(MessageGroup messageGroup, Collection<Message<?>> completedMessages) { Object groupId = messageGroup.getGroupId(); MessageGroupStore messageStore = getMessageStore(); messageStore.completeGroup(groupId); if (this.expireGroupsUponCompletion) { remove(messageGroup); } else { if (messageStore instanceof SimpleMessageStore) { ((SimpleMessageStore) messageStore).clearMessageGroup(groupId); } else { messageStore.removeMessagesFromGroup(groupId, messageGroup.getMessages()); } } }