Details
-
Improvement
-
Resolution: Unresolved
-
Minor
-
2.3.0.patch
-
None
Description
PSPNG uses the following code (in FullSyncProvisioner.java) to create a queue and listen for messages. While the documentation says the receive( ) call will block, it does not and an external sleep is necessary.
GrouperSession gs = GrouperSession.startRootSession();
String queueName = "pspng_full_sync_" + provisioner.getName();
GrouperBuiltinMessagingSystem.createQueue(queueName);
GrouperBuiltinMessagingSystem.allowSendToQueue(queueName, gs.getSubject());
GrouperBuiltinMessagingSystem.allowReceiveFromQueue(queueName, gs.getSubject());
//...
while (true) {
//....
GrouperMessageReceiveParam receive = new GrouperMessageReceiveParam();
receive.assignGrouperMessageSystemName(GrouperBuiltinMessagingSystem.BUILTIN_NAME);
receive.assignQueueName(queueName);
GrouperMessageReceiveResult grouperMessageReceiveResult = GrouperMessagingEngine.receive(receive);Collection<GrouperMessage> grouperMessages;
try {
LOG.debug("{} message reader: requesting messages from queue {}",
getName(), queueName);grouperMessages = grouperMessageReceiveResult.getGrouperMessages();
}
catch (Exception e) {
nextSleepTime_secs = 15;
LOG.error("{} message reader: Problem pulling messages from grouper message queue",
getName(), e);
continue;
}if ( grouperMessages.size() == 0 ) {
nextSleepTime_secs = 5;
LOG.info("{} message reader: no messages received", getName());
continue;
}
This frequently logs "no messages received".