Package com.rabbitmq.client.impl
Class ChannelManager
- java.lang.Object
-
- com.rabbitmq.client.impl.ChannelManager
-
- Direct Known Subclasses:
RecoveryAwareChannelManager
public class ChannelManager extends java.lang.ObjectManages a set of channels, indexed by channel number (1.._channelMax).
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.Map<java.lang.Integer,ChannelN>_channelMapMapping from1.._channelMaxtoChannelNinstanceprivate int_channelMaxMaximum channel number available on this connection.private IntAllocatorchannelNumberAllocatorprivate intchannelShutdownTimeoutprivate static org.slf4j.LoggerLOGGERprotected MetricsCollectormetricsCollectorprivate java.lang.ObjectmonitorMonitor for_channelMapandchannelNumberAllocatorprotected ObservationCollectorobservationCollectorprivate java.util.concurrent.ExecutorServiceshutdownExecutorprivate java.util.Set<java.util.concurrent.CountDownLatch>shutdownSetprivate java.util.concurrent.ThreadFactorythreadFactoryprivate ConsumerWorkServiceworkService
-
Constructor Summary
Constructors Constructor Description ChannelManager(ConsumerWorkService workService, int channelMax)ChannelManager(ConsumerWorkService workService, int channelMax, java.util.concurrent.ThreadFactory threadFactory)ChannelManager(ConsumerWorkService workService, int channelMax, java.util.concurrent.ThreadFactory threadFactory, MetricsCollector metricsCollector, ObservationCollector observationCollector)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private ChannelNaddNewChannel(AMQConnection connection, int channelNumber)ChannelNcreateChannel(AMQConnection connection)ChannelNcreateChannel(AMQConnection connection, int channelNumber)ChannelNgetChannel(int channelNumber)Looks up a channel on this connection.intgetChannelMax()java.util.concurrent.ExecutorServicegetShutdownExecutor()voidhandleSignal(ShutdownSignalException signal)Handle shutdown.protected ChannelNinstantiateChannel(AMQConnection connection, int channelNumber, ConsumerWorkService workService)voidreleaseChannelNumber(ChannelN channel)Remove the channel from the channel map and free the number for re-use.private voidscheduleShutdownProcessing()voidsetChannelShutdownTimeout(int channelShutdownTimeout)Set the shutdown timeout for channels.voidsetShutdownExecutor(java.util.concurrent.ExecutorService shutdownExecutor)
-
-
-
Field Detail
-
LOGGER
private static final org.slf4j.Logger LOGGER
-
monitor
private final java.lang.Object monitor
Monitor for_channelMapandchannelNumberAllocator
-
_channelMap
private final java.util.Map<java.lang.Integer,ChannelN> _channelMap
Mapping from1.._channelMaxtoChannelNinstance
-
channelNumberAllocator
private final IntAllocator channelNumberAllocator
-
workService
private final ConsumerWorkService workService
-
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
-
metricsCollector
protected final MetricsCollector metricsCollector
-
observationCollector
protected final ObservationCollector observationCollector
-
-
Constructor Detail
-
ChannelManager
public ChannelManager(ConsumerWorkService workService, int channelMax)
-
ChannelManager
public ChannelManager(ConsumerWorkService workService, int channelMax, java.util.concurrent.ThreadFactory threadFactory)
-
ChannelManager
public ChannelManager(ConsumerWorkService workService, int channelMax, java.util.concurrent.ThreadFactory threadFactory, MetricsCollector metricsCollector, ObservationCollector observationCollector)
-
-
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 numberchannelNumberon this connection
-
handleSignal
public void handleSignal(ShutdownSignalException signal)
Handle shutdown. All the managedChannels 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
-
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 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 theshutdownExecutorproperty is set. Default toConnectionFactory.DEFAULT_HEARTBEAT+ 5 % seconds- Parameters:
channelShutdownTimeout- shutdown timeout in milliseconds
-
-