zoukankan      html  css  js  c++  java
  • ActiveMQ 的连接和会话

    要了解 connection 和 session 的概念,可以先从 ConnectionState 和 SessionState 入手:

    // 省略部分代码
    public class ConnectionState {
        ConnectionInfo info;
        private final ConcurrentHashMap<TransactionId, TransactionState> transactions = new ConcurrentHashMap<TransactionId, TransactionState>();
        private final ConcurrentHashMap<SessionId, SessionState> sessions = new ConcurrentHashMap<SessionId, SessionState>();
        private final List<DestinationInfo> tempDestinations = Collections.synchronizedList(new ArrayList<DestinationInfo>());
        private final AtomicBoolean shutdown = new AtomicBoolean(false);
        private boolean connectionInterruptProcessingComplete = true;
        private HashMap<ConsumerId, ConsumerInfo> recoveringPullConsumers;
    
        public ConnectionState(ConnectionInfo info) {
            this.info = info;
            // Add the default session id.
            addSession(new SessionInfo(info, -1));
        }
    }

    从代码可以看出,连接里有事务集合、会话集合、临时队列集合等,这说明:
    1. 事务属于一个连接; 2. 会话属于一个连接; 3. 临时队列的生存期是连接的有效期

    // 省略部分代码
    public class SessionState {
        final SessionInfo info;
    
        private final Map<ProducerId, ProducerState> producers = new ConcurrentHashMap<ProducerId, ProducerState>();
        private final Map<ConsumerId, ConsumerState> consumers = new ConcurrentHashMap<ConsumerId, ConsumerState>();
        private final AtomicBoolean shutdown = new AtomicBoolean(false);
    
        public SessionState(SessionInfo info) {
            this.info = info;
        }
    }

    从上面能看出,producer 和 consumer 是属于某个会话的,producer 和 consumer 都有唯一的 ID 。

    // 省略部分代码
    public class ProducerState {
        final ProducerInfo info;
        private TransactionState transactionState;
    }
    
    public class ConsumerState {        
        final ConsumerInfo info;
    }

    ProducerState 和 ConsumerState 只是做了简单的封装。

    其中 ConnectionInfo, SessionInfo, ProducerInfo, ConsumerInfo 都是消息类型,均继承自 BaseCommand 接口。

  • 相关阅读:
    Saltstack module apache 详解
    Saltstack module ip 详解
    Saltstack module iosconfig 详解
    Saltstack module introspect 详解
    Saltstack module inspector 详解
    Saltstack module ini 详解
    Saltstack module incron 详解
    Modbus 指令 RS485指令规则
    停车系统对接第三方在线支付平台(二)
    停车系统对接第三方在线支付平台
  • 原文地址:https://www.cnblogs.com/allenwas3/p/8934336.html
Copyright © 2011-2022 走看看