- Interface GrouperMessagingSystem defines a messaging system. Implement this to integrate Grouper messaging with a messaging system
- GrouperBuiltinMessagingSystem implements GrouperMessagingSystem - Grouper's implementation of the messaging interface
- GrouperMessagingEngine is the Grouper API to send a message to various messaging systems
Configure messaging systems in the grouper.client.properties
################################ ## Grouper Messaging System ################################ # name of messaging system which is the default grouper.messaging.default.name.of.messaging.system = grouperBuiltinMessaging # name of a messaging system. note, "grouperBuiltinMessaging" can be arbitrary grouper.messaging.system.grouperBuiltinMessaging.name = grouperBuiltinMessaging # class that implements edu.internet2.middleware.grouperClient.messaging.GrouperMessagingSystem grouper.messaging.system.grouperBuiltinMessaging.class = edu.internet2.middleware.grouper.messaging.GrouperBuiltinMessagingSystem # name of a messaging system. note, "myAwsMessagingSystem" can be arbitrary # grouper.messaging.system.myAwsMessagingSystem.name = aws # class that implements edu.internet2.middleware.grouperClient.messaging.GrouperMessagingSystem # grouper.messaging.system.myAwsMessagingSystem.class =
Configure Builtin queues/topics
// create objects GrouperBuiltinMessagingSystem.createQueue("abc"); GrouperBuiltinMessagingSystem.createTopic("def"); // permissions on objects GrouperBuiltinMessagingSystem.allowSendToQueue("abc", SubjectTestHelper.SUBJ0); GrouperBuiltinMessagingSystem.allowSendToTopic("abc", SubjectTestHelper.SUBJ0); GrouperBuiltinMessagingSystem.allowReceiveFromQueue("abc", SubjectTestHelper.SUBJ0); //link up topic with queue(s) GrouperBuiltinMessagingSystem.topicSendsToQueue("def", "abc");
Use messaging
// send a message GrouperMessageSendResult grouperMessageSendResult = GrouperMessagingEngine.send(new GrouperMessageSendParam().assignGrouperMessageSystemName("someName").assignQueueOrTopic("abc").addMessageBody("message body")); // receive messages GrouperMessageReceiveResult grouperMessageReceiveResult = GrouperMessagingEngine.receive(new GrouperMessageReceiveParam().assignGrouperMessageSystemName("someName").assignQueueOrTopic("abc")); // mark as processed GrouperMessageProcessedResult grouperMessageProcessedResult = GrouperMessagingEngine.markAsProcessed(new GrouperMessageProcessedParam().assignGrouperMessageSystemName("someName").assignQueueOrTopic("abc").addGrouperMessage(grouperMessage));
Change log consumer that sends to messaging
##################################### ## Messaging integration with change log ##################################### # note, change "messaging" in key to be the name of the consumer. e.g. changeLog.consumer.myAzureConsumer.class #changeLog.consumer.messaging.class = edu.internet2.middleware.grouper.changeLog.ChangeLogConsumerToMessage #changeLog.consumer.messaging.quartzCron = 0 * * * * ? #changeLog.consumer.messaging.messagingSystemName = grouperBuiltinMessaging #changeLog.consumer.messaging.queueOrTopic = abc
Messaging ESB change log consumer, configure in grouper-loader.properties
##################################### ## Messaging integration ##################################### # note, change "messagingEsb" in key to be the name of the consumer. e.g. changeLog.consumer.myAzureConsumer.class #changeLog.consumer.messagingEsb.class = edu.internet2.middleware.grouper.changeLog.esb.consumer.EsbConsumer #changeLog.consumer.messagingEsb.quartzCron = 0 * * * * ? #changeLog.consumer.messagingEsb.elfilter = event.eventType eq 'GROUP_DELETE' || event.eventType eq 'GROUP_ADD' || event.eventType eq 'MEMBERSHIP_DELETE' || event.eventType eq 'MEMBERSHIP_ADD' #changeLog.consumer.messagingEsb.publisher.class = edu.internet2.middleware.grouper.changeLog.esb.consumer.EsbMessagingPublisher #changeLog.consumer.messagingEsb.publisher.messagingSystemName = grouperBuiltinMessaging #changeLog.consumer.messagingEsb.publisher.queueOrTopic = abc
Configure builtin messaging cleanup jobs in grouper-loader.properties
################################## ## grouper builtin messaging cleanup cron ################################## #quartz cron-like schedule for grouper messaging daemon. #leave blank to disable this, the default is every hour, 10 minutes after the hour #this daemon does cleanup on the builtin messaging table changeLog.builtinMessagingDaemon.quartz.cron = 0 10 * * * ? # after three days of not consuming messages, delete them, if -1, dont run this daemon grouper.builtin.messaging.deleteAllMessagesMoreThanHoursOld = 72 # after three hours of having processed messages, delete them. Note, if this is -1 just delete when marking processed grouper.builtin.messaging.deleteProcessedMessagesMoreThanMinutesOld = 180
sd