Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Info

See Grouper Messaging System Developers Guide for info on how to integrate the Grouper Messaging System with another messaging system.

GSH to manage built in messaging

GSH to send / receive messages

 

Setup queues

  • Queues can be sent to directly or from topics
  • A queue shouldnt have the same name as a topic.
  • There is a built in folder for queues in grouper: <ATTRIBUTE_ROOT_STEM_CONFIGURED_NAME>:grouperMessageQueues.  
  • A queue is a permission resource in that folder of attributeDef <ATTRIBUTE_ROOT_STEM_CONFIGURED_NAME>:messages:grouperMessageQueueDef
  • The action to send to a topic is "send_to_queue", grant that to a subject who is allowed to send messages to the queue
  • The action to receive from a queue is "receive", grant that to a subject who is allowed to pull messages off the queue
Code Block
grouperSession = GrouperSession.startRootSession();
  
GrouperBuiltinMessagingSystem.createQueue("abc"); 
GrouperBuiltinMessagingSystem.deleteQueue("abc");


// permissions on objects
GrouperBuiltinMessagingSystem.allowSendToQueue("abc", SubjectTestHelper.SUBJ0);
GrouperBuiltinMessagingSystem.allowReceiveFromQueue("abc", SubjectTestHelper.SUBJ0);
GrouperBuiltinMessagingSystem.disallowSendToQueue("abc", SubjectTestHelper.SUBJ0);
GrouperBuiltinMessagingSystem.disallowReceiveFromQueue("abc", SubjectTestHelper.SUBJ0);

 

Setup topics

  • There is a built in folder for topics in grouper: <ATTRIBUTE_ROOT_STEM_CONFIGURED_NAME>:grouperMessageTopics.  
  • A topic is a permission resource in that folder of attributeDef <ATTRIBUTE_ROOT_STEM_CONFIGURED_NAME>:messages:grouperMessageTopicDef
  • The action to send to a topic is "send_to_topic", grant that to a subject who is allowed to send messages to the topic
  • You cannot read from a topic, the topic will send to queues, and you can grant that on queues
  • To setup the relationship between a topic and queue(s), setup a permission resource implied relationship between the topic and the queues
Code Block
grouperSession = GrouperSession.startRootSession();
  
GrouperBuiltinMessagingSystem.createTopic("def");
GrouperBuiltinMessagingSystem.deleteTopic("def");
 
// permissions on objects
GrouperBuiltinMessagingSystem.allowSendToTopic("abc", SubjectTestHelper.SUBJ0);
GrouperBuiltinMessagingSystem.disallowSendToTopic("abc", SubjectTestHelper.SUBJ0);
 
// topics send to queues
GrouperBuiltinMessagingSystem.topicAddSendToQueue("def", "abc");
Collection<String> queues = GrouperBuiltinMessagingSystem.queuesTopicSendsTo("def");
GrouperBuiltinMessagingSystem.topicRemoveSendToQueue("def", "abc");

Performance

  • This system (with local HSQL database) can process (send / receive / acknowledge) 
    • 125 messages per second in one thread
    • 312 messages per second in 10 threads

...