...
Code Block |
---|
/** * @author mchyzer * $Id$ */ package edu.internet2.middleware.grouper.messaging; import java.util.Collection; import edu.internet2.middleware.grouper.changeLog.ChangeLogEntry; import edu.internet2.middleware.grouperClient.messaging.GrouperMessage; import edu.internet2.middleware.grouperClient.messaging.GrouperMessageAcknowledgeParam; import edu.internet2.middleware.grouperClient.messaging.GrouperMessageAcknowledgeType; import edu.internet2.middleware.grouperClient.messaging.GrouperMessagingEngine; /** * */ public class MessagingListenerPrint extends MessagingListenerBase { /** * */ public MessagingListenerPrint() { } /** * @see edu.internet2.middleware.grouper.messaging.MessagingListenerBase#processMessages(java.lang.String, java.lang.String, java.util.Collection, edu.internet2.middleware.grouper.messaging.MessagingListenerMetadata) */ @Override public void processMessages(String messageSystemName, String queue, Collection<GrouperMessage> grouperMessageList, MessagingListenerMetadata messagingListenerMetadata) { for (GrouperMessage grouperMessage : grouperMessageList) { try { String json = grouperMessage.getMessageBody(); //try to convert to change log entry try { Collection<ChangeLogEntry> changeLogEntries = ChangeLogEntry.fromJsonToCollection(json); for (ChangeLogEntry changeLogEntry : changeLogEntries) { System.out.println("Change log entry: " + changeLogEntry.getChangeLogType().getChangeLogCategory() + " -> " + changeLogEntry.getChangeLogType().getActionName() + ", " + changeLogEntry.getId()); } System.out.println("Change log entry: " + json); } catch (Exception e) { System.out.println("Not change log entry: " + grouperMessage.getId() + ", " + json); } //mark it as processed GrouperMessagingEngine.acknowledge(new GrouperMessageAcknowledgeParam() .assignAcknowledgeType(GrouperMessageAcknowledgeType.mark_as_processed) .assignQueueName(queue).assignGrouperMessageSystemName(messageSystemName) .addGrouperMessage(grouperMessage)); } catch (Exception e) { messagingListenerMetadata.registerProblem(e, "Problem in message: " + grouperMessage.getId(), grouperMessage.getId()); break; } } } } |
Messaging listener that uses ChangeLogConsumerBase implementations
If you have a change log consumer and you want to have it process messages, use this:
Code Block |
---|
#####################################
## Messaging listener using the change log consumer API
#####################################
# note, change "messagingListenerChangeLogConsumer" in key to be the name of the listener. e.g. messaging.listener.myAzureListener.class
#
# keep this class to be MessagingListenerToChangeLogConsumer
#messaging.listener.messagingListenerChangeLogConsumer.class = edu.internet2.middleware.grouper.messaging.MessagingListenerToChangeLogConsumer
#messaging.listener.messagingListenerChangeLogConsumer.changeLogConsumerClass = edu.internet2.middleware.grouper.messaging.SomethingExtendsChangeLogConsumerBase
#messaging.listener.messagingListenerChangeLogConsumer.quartzCron = 0 * * * * ?
#messaging.listener.messagingListenerChangeLogConsumer.messagingSystemName = grouperBuiltinMessaging
#messaging.listener.messagingListenerChangeLogConsumer.queueName = abc
#messaging.listener.messagingListenerChangeLogConsumer.numberOfTriesPerIteration = 3
#messaging.listener.messagingListenerChangeLogConsumer.pollingTimeoutSeconds = 18
#messaging.listener.messagingListenerChangeLogConsumer.sleepSecondsInBetweenIterations = 0
#messaging.listener.messagingListenerChangeLogConsumer.maxMessagesToReceiveAtOnce = 20
# if there are 20 messages to receive at once, then do this 50 times per call max
#messaging.listener.messagingListenerChangeLogConsumer.maxOuterLoops = 50
|
Change log consumer that sends to messaging
...