INT-2311
modified implementation of MessageGroupQueue to use interruptible locks Basically modeled it after LinkedBlockingQueue changed to use ReadWriteLock refactored MessageGroupQueue and added tests changed MessageGroupQueue to use Condition added messageGroupSize(groupId) method to MessageGroupStore and all the implementations polishing based on Gary's comments removed setStoreLock method in favor of additional constructors polishing tests, decreased timeouts made peek() thread safe added logging
This commit is contained in:
committed by
Mark Fisher
parent
d1367e06d2
commit
86c574e493
@@ -245,6 +245,12 @@ public class MongoDbMessageStore extends AbstractMessageGroupStore implements Me
|
||||
this.updateGroup(groupId);
|
||||
return message;
|
||||
}
|
||||
|
||||
public int messageGroupSize(Object groupId) {
|
||||
long lCount = this.template.count(new Query(where(GROUP_ID_KEY).is(groupId)), this.collectionName);
|
||||
Assert.isTrue(lCount <= Integer.MAX_VALUE, "Message count is out of Integer's range");
|
||||
return (int) lCount;
|
||||
}
|
||||
|
||||
/*
|
||||
* Common Queries
|
||||
|
||||
@@ -75,6 +75,19 @@ public class MongoDbMessageGroupStoreTests extends MongoDbAvailableTests {
|
||||
assertNull(retrievedMessage.getHeaders().get("message_group"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@MongoDbAvailable
|
||||
public void testCountMessagesInGroup() throws Exception{
|
||||
MongoDbFactory mongoDbFactory = this.prepareMongoFactory();
|
||||
MongoDbMessageStore store = new MongoDbMessageStore(mongoDbFactory);
|
||||
|
||||
Message<?> messageA = new GenericMessage<String>("A");
|
||||
Message<?> messageB = new GenericMessage<String>("B");
|
||||
store.addMessageToGroup(1, messageA);
|
||||
store.addMessageToGroup(1, messageB);
|
||||
assertEquals(2, store.messageGroupSize(1));
|
||||
}
|
||||
|
||||
@Test
|
||||
@MongoDbAvailable
|
||||
public void testMessageGroupUpdatedDateChangesWithEachAddedMessage() throws Exception{
|
||||
|
||||
Reference in New Issue
Block a user