// A simple consumer that will print to the console for now
  val consumer = Sink.fold(0)((acc: Int, n: Int) => acc.+(n))

  //  val consumer = Sink.foreach((x: Int) => print(x.toString))
  //   Attach a MergeHub Source to the consumer. This will materialize to a
  //   corresponding Sink.
  val runnableGraph: RunnableGraph[Sink[Int, NotUsed]] =
  MergeHub.source[Int](perProducerBufferSize = 16).to(consumer)

  // By running/materializing the consumer we get back a Sink, and hence
  // now have access to feed elements into it. This Sink can be materialized
  // any number of times, and every element that enters the Sink will
  // be consumed by our consumer.
  val toConsumer: Sink[Int, NotUsed] = runnableGraph.run()

  // Feeding two independent sources into the hub.
  Source.single(1).runWith(toConsumer)
  Source.single(2).runWith(toConsumer)