Class ChannelManager

  • Direct Known Subclasses:
    RecoveryAwareChannelManager

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

      • LOGGER

        private static final org.slf4j.Logger LOGGER
      • monitor

        private final java.lang.Object monitor
        Monitor for _channelMap and channelNumberAllocator
      • _channelMap

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

        private final IntAllocator channelNumberAllocator
      • shutdownSet

        private final java.util.Set<java.util.concurrent.CountDownLatch> shutdownSet
      • _channelMax

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

        private java.util.concurrent.ExecutorService shutdownExecutor
      • threadFactory

        private final java.util.concurrent.ThreadFactory threadFactory
      • channelShutdownTimeout

        private int channelShutdownTimeout
    • Method Detail

      • 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 java.io.IOException
        Throws:
        java.io.IOException
      • createChannel

        public ChannelN createChannel​(AMQConnection connection,
                                      int channelNumber)
                               throws java.io.IOException
        Throws:
        java.io.IOException
      • 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 java.util.concurrent.ExecutorService getShutdownExecutor()
      • setShutdownExecutor

        public void setShutdownExecutor​(java.util.concurrent.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