           if !broadcastable? or broadcastable # TODO: this is insecure by default :(
             [data] = rest
             data = JSON.stringify data
-            @mq.emit 'updateInstances', getStaticRoutingKey(ctx, event), data, autoDelete: no
+            @enqueueUpdateInstancesEvent getStaticRoutingKey(ctx, event), data
+
+  enqueueUpdateInstancesEvent: (routingKey, message) ->
+
+    unless @pendingUpdateInstancesMessages[routingKey]
+      @pendingUpdateInstancesMessages[routingKey] = []
+
+    len = @pendingUpdateInstancesMessages[routingKey].push message
+    @triggerUpdateInstancesEvent routingKey  if len is 1
+
+    return this
+
+  triggerUpdateInstancesEvent:(routingKey) ->
+    setTimeout =>
+      { pendingUpdateInstancesMessages } = this
+      messages = pendingUpdateInstancesMessages[routingKey]
+      @pendingUpdateInstancesMessages[routingKey] = []
+      if messages.length > 0
+        @mq.emit 'updateInstances', routingKey, messages, autoDelete: no
+    , @updateInstancesMessageThrottleMs
+
+    return this
 
   publishToControlExchange:(exchangeEvent, data)->
     options =

        else
          payload     = JSON.stringify rest[0] or null
          routingKey  = getInstanceRoutingKey ctx, event
          @mq.emit 'updateInstances', routingKey, payload, autoDelete: no
      when 'static'
        if event is 'broadcast'
          [secretChannelId, message] = rest

      process.exit 0
    @setMaxListeners 0
    @emit 'newInstance', this
    @pendingUpdateInstancesMessages = {}
    @updateInstancesMessageThrottleMs = 100


  bound: require 'koding-bound'

