diff --git a/lib/workers.js b/lib/workers.js
index <HASH>..<HASH> 100644
--- a/lib/workers.js
+++ b/lib/workers.js
@@ -149,13 +149,17 @@ Workers.prototype.addWorker = function(data) {
 
   var self = this;
 
-  var worker = extend(new WorkerRegistration(), data);
-
   var topicName = data.topicName;
 
-  self.emit('worker:register', worker);
+  if (this.workers[topicName]) {
+    throw new Error('worker for <' + topicName + '> already registered');
+  }
+
+  var worker = extend(new WorkerRegistration(), data);
+
+  this.emit('worker:register', worker);
 
-  self.workers[topicName] = worker;
+  this.workers[topicName] = worker;
 
   /**
    * Remove the worker worker
diff --git a/test/workers-spec.js b/test/workers-spec.js
index <HASH>..<HASH> 100644
--- a/test/workers-spec.js
+++ b/test/workers-spec.js
@@ -112,6 +112,21 @@ describe('workers', function() {
     });
 
 
+    it('should allow single worker per topic name only', function() {
+
+      // given
+      workers = Workers(engineUrl);
+
+      // when
+      workers.registerWorker('worker:Stuff', [ 'a', 'b' ], emptyCallback);
+
+      // then
+      expect(function() {
+        workers.registerWorker('worker:Stuff', [ 'a', 'b' ], emptyCallback);
+      }).to.throw('worker for <worker:Stuff> already registered');
+    });
+
+
     it('should configure Workers with workerId', function() {
 
       // given
feat(workers): fail on duplicate worker registration attempt