kafka系列一(基本知识)

Posted liuxingxing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了kafka系列一(基本知识)相关的知识,希望对你有一定的参考价值。

“线”池

利用队列建立DrawLineTools的线池。

当需要绘制线的时候,如果不能从线池中取出DrawLineTools,就Instantiate出一个。

    public class Line
    {
        private static readonly LinePool LinePool = new LinePool(Resources.Load<GameObject>("Prefabs/Line"));
        private static readonly LinePool EndLinePool = new LinePool(Resources.Load<GameObject>("Prefabs/End"));

        // private static LineManager _singleton;
        
        /// <summary>
        /// 创建DrawMeshTools
        /// </summary>
        /// <returns></returns>
        public static DrawLineTools CreateLine()
        {
            return LinePool.GetLine();
        }

        /// <summary>
        /// 连线终点
        /// </summary>
        /// <param name="node">结点</param>
        public static DrawLineTools CreateEnd(TrackNode node)
        {
            DrawLineTools mesh = EndLinePool.GetLine();;
            mesh.LastNode = node;
            return mesh;
        }
        
        /// <summary>
        /// 将临时线回收
        /// </summary>
        /// <param name="line">待回收的DrawLineTools</param>
        public static void ResetLine(DrawLineTools line)
        {
            LinePool.ResetLine(line);
        }
    } 
    
    public class LinePool
    {
        public LinePool(GameObject p)
        {
            lines = new Queue<DrawLineTools>();
            prefab = p;
        }
        
        private Queue<DrawLineTools> lines;
        private GameObject poolRoot;
        private GameObject prefab;
        
        public DrawLineTools GetLine()
        {
            DrawLineTools line;
            if (lines.Count == 0)
            {
                GameObject go = GameObject.Instantiate(prefab);
                line = go.GetComponent<DrawLineTools>();
            }
            else
            {
                line = lines.Dequeue();
                line.gameObject.SetActive(true);
                line.transform.parent = null;
            }

            return line;
        }

        public void ResetLine(DrawLineTools line)
        {
            if (poolRoot == null)
            {
                poolRoot = new GameObject("PoolRoot");
            }
            lines.Enqueue(line);
            line.gameObject.SetActive(false);
            line.transform.parent = poolRoot.transform;
        }
    }

以上是关于kafka系列一(基本知识)的主要内容,如果未能解决你的问题,请参考以下文章

Apache Kafka系列

Flink实战系列Flink 1.14.0 消费 kafka 数据自定义反序列化器

2021年大数据Kafka:❤️Kafka的java API编写❤️

2021年大数据Kafka:❤️Kafka的java API编写❤️

Kafka 系列—— Kafka 简介

SpringCloud系列十一:SpringCloudStream(SpringCloudStream 简介创建消息生产者创建消息消费者自定义消息通道分组与持久化设置 RoutingKey)(代码片段