Out of the box, Fedora is configured to publish its event messages to a JMS topic. While this is adequate for small-scale demo and testing usage, for production deployments it is recommended that you use a JMS queue instead. The primary advantage of queues over topics is that messages in a queue are persisted until they are read by a consumer, whereas messages in a topic can be more ephemeral.

To enable the JMS queue, and disable the JMS topic, edit the JMS messaging section of your Spring configuration file to look like this:

<!--   JMS Topic -->
<!-- disabled in favor of the queue
<bean class="org.fcrepo.jms.JMSTopicPublisher">
  <constructor-arg value="fedora"/>
</bean>
-->

<!-- JMS Queue -->
<bean class="org.fcrepo.jms.JMSQueuePublisher">
  <constructor-arg value="fedora"/>
</bean>

 

Note that although queues persist their messages until they are read by a consumer, once any consumer reads a message, that message is dequeued. Therefore, if you need multiple consumers to be able to read the same message in parallel, you will need to configure a way to broadcast (i.e., copy) the message from one input queue to multiple output queues.

One implementation of this pattern is Amherst College's acrepo-connector-broadcast Camel route, part of their suite of repository extension services.