知识卡片
Channel不能跨线程共享
内容
一个Connection可以开出多个Channel,但Channel本身不是线程安全的,不能被多个线程共享使用——并发操作同一个Channel可能导致网络帧交错错乱,还会破坏发送方确认机制的正确性。因此惯例是每个线程独占一个Channel,通过Connection复用TCP连接、通过Channel隔离并发。发散:这是”共享可变状态需要加锁或隔离”这条通用并发原则在协议客户端设计上的体现——Connection做了资源复用,但复用的边界止步于Channel,往内一层仍要按线程隔离。
参考来源
《RabbitMQ实战指南》第3章《客户端开发向导》