              :media-driver-context media-driver-context
              :media-driver media-driver
              :publications publications
-             :connections connections
              :virtual-peers virtual-peers
              :compress-f compress-f
              :decompress-f decompress-f

          decompress-f (or (:onyx.messaging/decompress-fn opts) decompress)
          virtual-peers (atom (pm/vpeer-manager))
          publications (atom {})
          connections (atom {})
          subscriber-count (arg-or-default :onyx.messaging.aeron/subscriber-count opts)
          subscribers (mapv (fn [stream-id]
                              (start-subscriber! bind-addr port stream-id virtual-peers decompress-f receive-idle-strategy))
                            (range subscriber-count))
          pub-gc-thread (future (gc-publications publications connections opts))]
      (assoc component
             :pub-gc-thread pub-gc-thread
             :bind-addr bind-addr


;; FIXME: gc'ing publications could be racy if a publication is grabbed
;; just as it is being gc'd - though it is unlikely
(defn gc-publications [publications opts]
  (let [interval (arg-or-default :onyx.messaging/peer-link-gc-interval opts)
        idle (arg-or-default :onyx.messaging/peer-link-idle-timeout opts)]
    (loop []
