Class ChannelManager

java.lang.Object
com.rabbitmq.client.impl.ChannelManager
Direct Known Subclasses:
RecoveryAwareChannelManager

public class ChannelManager extends Object
Manages a set of channels, indexed by channel number (1.._channelMax).
  • Field Details

    • LOGGER

      private static final org.slf4j.Logger LOGGER
    • monitor

      private final Object monitor
      Monitor for _channelMap and channelNumberAllocator
    • _channelMap

      private final Map<Integer,ChannelN> _channelMap
      Mapping from 1.._channelMax to ChannelN instance
    • channelNumberAllocator

      private final IntAllocator channelNumberAllocator
    • workService

      private final ConsumerWorkService workService
    • shutdownSet

      private final Set<CountDownLatch> shutdownSet
    • _channelMax

      private final int _channelMax
      Maximum channel number available on this connection.
    • shutdownExecutor

      private ExecutorService shutdownExecutor
    • threadFactory

      private final ThreadFactory threadFactory
    • channelShutdownTimeout

      private int channelShutdownTimeout
    • metricsCollector

      protected final MetricsCollector metricsCollector
    • observationCollector

      protected final ObservationCollector observationCollector
  • Constructor Details

  • Method Details

    • getChannelMax

      public int getChannelMax()
    • getChannel

      public ChannelN getChannel(int channelNumber)
      Looks up a channel on this connection.
      Parameters:
      channelNumber - the number of the required channel
      Returns:
      the channel on this connection with number channelNumber
      Throws:
      UnknownChannelException - if there is no channel with number channelNumber on this connection
    • handleSignal

      public void handleSignal(ShutdownSignalException signal)
      Handle shutdown. All the managed Channels are shutdown.
      Parameters:
      signal - reason for shutdown
    • scheduleShutdownProcessing

      private void scheduleShutdownProcessing()
    • createChannel

      public ChannelN createChannel(AMQConnection connection) throws IOException
      Throws:
      IOException
    • createChannel

      public ChannelN createChannel(AMQConnection connection, int channelNumber) throws IOException
      Throws:
      IOException
    • addNewChannel

      private ChannelN addNewChannel(AMQConnection connection, int channelNumber)
    • instantiateChannel

      protected ChannelN instantiateChannel(AMQConnection connection, int channelNumber, ConsumerWorkService workService)
    • releaseChannelNumber

      public void releaseChannelNumber(ChannelN channel)
      Remove the channel from the channel map and free the number for re-use. This method must be safe to call multiple times on the same channel. If it is not then things go badly wrong.
    • getShutdownExecutor

      public ExecutorService getShutdownExecutor()
    • setShutdownExecutor

      public void setShutdownExecutor(ExecutorService shutdownExecutor)
    • setChannelShutdownTimeout

      public void setChannelShutdownTimeout(int channelShutdownTimeout)
      Set the shutdown timeout for channels. This is the amount of time the manager waits for a channel to shutdown before giving up. Works only when the shutdownExecutor property is set. Default to ConnectionFactory.DEFAULT_HEARTBEAT + 5 % seconds
      Parameters:
      channelShutdownTimeout - shutdown timeout in milliseconds