You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Next »

Work in progress

Under construction, please come back soon!

JMS-based messaging for the Fedora Commons repository which is based on sending messages notifying consumers that content items within a Fedora Repository have been modified, identifying with URIs the item that has changed and the location of the modified content.


Important Note: This is pre-alpha code published to encourage discussion on this topic to work towards a consensual agreement on a generic messaging and Fedora implementation pattern suitable for all kinds of potential consumers of Fedora messages. Particularly see the list of known issues.


Rationale

Fedora includes JMS-based messaging capabilities. Messages are dispatched on every Fedora API-M method invocation, and contain details of the method name and parameters. Messages are therefore closely coupled to Fedora's API-M.

There exists a class of potential consumers of Fedora messages with responsibilities for indexing or otherwise manipulating and persisting the content within Fedora. These clients in general are interested in knowing when content within Fedora changes, and what those changes are.

These consumers currently have to "decode" the API-M messages received via JMS to identify what the message means to them in terms of modifications to the content within Fedora.

Hence Fedora Content Change Messaging. The messages are designed to be deliberately agnostic to Fedora's API, and instead represent, using a generic message format (encapsulated within AtomPub), additions, deletions and modifications to content within Fedora; identifying the item using an HTTP URI, and providing a "callback" HTTP URI from which the new or modified content can be accessed.

Installing and using

The source code is hosted on Github. See the README file for instructions on installing and using.

Consumers of messages can make use of the following classes:
net.acuityunlimited.fedora.messaging.AtomContentChangeMessage which can be used to deserialize the AtomPub message to net.acuityunlimited.gen.messaging.ContentObjectModification.

Software overview

This is a module that utilises Fedora's decorator pattern, in the same way as the current JMS messaging module. It can either be used alongside the existing messaging plug-in, or as an alternative.

API-M methods are handed off to an implementation of org.fcrepo.server.management.Management which constructs the appropriate message, and then passes the method down the decorator chain.

(In the future other architectural patterns might be considered, eg there may be more appropriate places to hook in notification with High-Level Storage.)

The Messages

Overall structure

AtomPub serialisation

Example messages

Code overview

  • No labels