              :virtual-peers virtual-peers
              :compress-f compress-f
              :decompress-f decompress-f
+             :shutdown shutdown
              :port port
              :send-idle-strategy send-idle-strategy
              :subscriber-count subscriber-count
              :subscribers subscribers)))
 
-  (stop [{:keys [media-driver media-driver-context subscribers publication-pool] :as component}]
+  (stop [{:keys [media-driver media-driver-context subscribers publication-pool shutdown] :as component}]
     (taoensso.timbre/info "Stopping Aeron Peer Group")
     (component/stop publication-pool)
-    (doseq [subscriber subscribers]
-      (future-cancel (:subscriber-fut subscriber))
-      (.close ^Subscription (:subscription subscriber))
-      (.close ^Aeron (:conn subscriber)))
+    (reset! shutdown true)
      
     (when media-driver (.close ^MediaDriver media-driver))
     (when media-driver-context (.deleteAeronDirectory ^MediaDriver$Context media-driver-context))

  (when peer-task-id 
    (swap! virtual-peers pm/dissoc peer-task-id)))

(def no-op-error-handler
  (reify ErrorHandler
    (onError [this x] (taoensso.timbre/warn x))))

(defn fragment-data-handler [f]
  (FragmentAssembler.

          virtual-peers (atom (pm/vpeer-manager))
          publication-pool (component/start (pub-pool/new-publication-pool opts send-idle-strategy))
          subscriber-count (arg-or-default :onyx.messaging.aeron/subscriber-count opts)
          shutdown (atom false)
          subscribers (mapv (fn [stream-id]
                              (start-subscriber! shutdown bind-addr port stream-id virtual-peers decompress-f receive-idle-strategy))
                            (range subscriber-count))]
      (when embedded-driver?
        (.addShutdownHook (Runtime/getRuntime)
