diff --git a/islandora-connector-broadcast/README.md b/islandora-connector-broadcast/README.md
new file mode 100644
index 00000000..0e1471a8
--- /dev/null
+++ b/islandora-connector-broadcast/README.md
@@ -0,0 +1,17 @@
+# Islandora Connector Broadcast
+
+## Description
+
+This service takes an incoming message and broadcasts it to a list of queues/topics. The list of recipients is specified in the `IslandoraBroadcastRecipients` header as a comma separated list.
+
+## Configuration
+
+Once deployed, the incoming message stream can be configured by editing the `ca.islandora.alpaca.connector.broadcast.cfg` file in your Karaf installation's `etc` directory.
+
+ input.stream=broker:queue:islandora-connector-broadcast
+
+For example, by changing `broker` to `activemq`, this service will attempt read messages from the ActiveMQ queue `islandora-connector-broadcast`. In theory, any broker technology supported by Camel should be supported, though ActiveMQ is the only one tested.
+
+## More Information
+
+For more information, please visit the [Apache Camel](http://camel.apache.org) documentation.
diff --git a/islandora-connector-broadcast/build.gradle b/islandora-connector-broadcast/build.gradle
new file mode 100644
index 00000000..adcc51eb
--- /dev/null
+++ b/islandora-connector-broadcast/build.gradle
@@ -0,0 +1,29 @@
+apply plugin: 'osgi'
+
+description = 'Islandora CLAW Broadcaster'
+
+dependencies {
+ compile group: 'org.apache.camel', name: 'camel-core', version: camelVersion
+ compile group: 'org.apache.camel', name: 'camel-blueprint', version: camelVersion
+ compile group: 'org.slf4j', name: 'slf4j-api', version: slf4jVersion
+ testCompile group: 'org.apache.camel', name: 'camel-test-blueprint', version: camelVersion
+}
+
+jar {
+ manifest {
+ description project.description
+ docURL project.docURL
+ vendor project.vendor
+ license project.license
+
+ instruction 'Import-Package', "org.apache.camel;version=\"${camelVersionRange}\",${defaultOsgiImports}"
+ instruction 'Export-Package', 'ca.islandora.alpaca.connector.broadcast'
+ }
+}
+
+artifacts {
+ archives (file('build/cfg/main/ca.islandora.alpaca.connector.broadcast.cfg')) {
+ classifier 'configuration'
+ type 'cfg'
+ }
+}
diff --git a/islandora-connector-broadcast/src/main/cfg/ca.islandora.alpaca.connector.broadcast.cfg b/islandora-connector-broadcast/src/main/cfg/ca.islandora.alpaca.connector.broadcast.cfg
new file mode 100644
index 00000000..9c20cfbc
--- /dev/null
+++ b/islandora-connector-broadcast/src/main/cfg/ca.islandora.alpaca.connector.broadcast.cfg
@@ -0,0 +1,4 @@
+# Incoming queue/topic on the broker of your choice.
+# Replace the 'broker' prefix with the broker for your system.
+# E.g. activemq, zeromq, etc...
+input.stream=broker:queue:islandora-connector-broadcast
diff --git a/islandora-connector-broadcast/src/main/java/ca/islandora/alpaca/connector/broadcast/BroadcastRouter.java b/islandora-connector-broadcast/src/main/java/ca/islandora/alpaca/connector/broadcast/BroadcastRouter.java
new file mode 100644
index 00000000..7239ebbb
--- /dev/null
+++ b/islandora-connector-broadcast/src/main/java/ca/islandora/alpaca/connector/broadcast/BroadcastRouter.java
@@ -0,0 +1,50 @@
+/*
+ * Licensed to Islandora Foundation under one or more contributor license
+ * agreements. See the NOTICE file distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * The Islandora Foundation licenses this file to you under the MIT License.
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://opensource.org/licenses/MIT
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package ca.islandora.alpaca.connector.broadcast;
+
+import static org.apache.camel.LoggingLevel.INFO;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * A content router distributing messages to multiple endpoints.
+ *
+ * @author Daniel Lamb
+ */
+public class BroadcastRouter extends RouteBuilder {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(BroadcastRouter.class);
+
+ /**
+ * Configure the message route workflow.
+ */
+ public void configure() throws Exception {
+
+ // Distribute message based on configured header.
+ from("{{input.stream}}")
+ .routeId("MessageBroadcaster")
+ .description("Broadcast messages from one queue/topic to other specified queues/topics.")
+ .log(INFO, LOGGER,
+ "Distributing message: ${headers[JMSMessageID]} with timestamp ${headers[JMSTimestamp]}")
+ .recipientList(simple("${headers[IslandoraBroadcastRecipients]}"))
+ .ignoreInvalidEndpoints();
+ }
+}
+
diff --git a/islandora-connector-broadcast/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/islandora-connector-broadcast/src/main/resources/OSGI-INF/blueprint/blueprint.xml
new file mode 100644
index 00000000..c2e250e5
--- /dev/null
+++ b/islandora-connector-broadcast/src/main/resources/OSGI-INF/blueprint/blueprint.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ ca.islandora.alpaca.connector.broadcast
+
+
diff --git a/karaf/src/main/resources/features.xml b/karaf/src/main/resources/features.xml
index 7f0c4652..5c2fa538 100644
--- a/karaf/src/main/resources/features.xml
+++ b/karaf/src/main/resources/features.xml
@@ -13,9 +13,20 @@
camel
activemq-camel
- mvn:ca.islandora.indexing/islandora-indexing-triplestore/${project.version}
+ mvn:ca.islandora.alpaca/islandora-indexing-triplestore/${project.version}
- mvn:ca.islandora.indexing/islandora-indexing-triplestore/${project.version}/cfg/configuration
+ mvn:ca.islandora.alpaca/islandora-indexing-triplestore/${project.version}/cfg/configuration
+
+
+
+
+ Distributes a message to a list of queues/topics.
+
+ camel
+
+ mvn:ca.islandora.alpaca/islandora-connector-broadcast/${project.version}
+
+ mvn:ca.islandora.alpaca/islandora-connector-broadcast/${project.version}/cfg/configuration
diff --git a/settings.gradle b/settings.gradle
index 54c1b360..e05f19d0 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1,5 +1,7 @@
include ':islandora-karaf'
include ':islandora-indexing-triplestore'
+include ':islandora-connector-broadcast'
project(':islandora-karaf').projectDir = "$rootDir/karaf" as File
project(':islandora-indexing-triplestore').projectDir = "$rootDir/islandora-indexing-triplestore" as File
+project(':islandora-connector-broadcast').projectDir = "$rootDir/islandora-connector-broadcast" as File