您好,在emqx插件开发中,如何在当前线程中保存自定义状态?
现在我们采用的方案是在connect回调中,新建一个gen_server线程,在这个线程中自定义状态;
后来在论坛中请教,专家说每个连接已经是一个新的线程了,那么请问是否有方式在这个线程中保存自定义状态呢?(比如连接后从数据库加载当前客户端的相关信息,缓存到当前线程,不用每次来消息都访问数据库了).
另外,在template中,这里面的这个Env如何使用? 看起来似乎是个全局的Env?还是可以线程独立的? 可否指导一下如何使用? 我在github上没能找到相关的例子,文档中也没这块的描述.
感谢
load(Env) ->
hook('client.connect', {?MODULE, on_client_connect, [Env]}),
目前不支持。
全局的,他就是类似于一个配置项。是你主动填的。可以是任意值。模板里默认传的自己 application 的 ENV
application:get_all_env() 就是当前 app 所有的 env,你也可以选择传其它的值。这个只是在 applicaiton 启动时会传一次。每次调用 hook 时都是大家都用的这个值。