接前面blog "说说ejabberd 离线消息的坑", 采用将离线消息存储在mysql中来解决。
ejabberd版本:16.09
1、修改ejabberd配置文件/etc/ejabberd/ejabberd.yml
配置mod_offline,如图:
添加db_type: sql
注释掉access_max_user_messages:max_user_offline_message
注意:access_max_user_messages的默认值是max_user_offline_message,所以只在此处注释掉access_max_user_messages:max_user_offline_message。是不会起作用的。还需要注释定义max_user_offline_message的地方。
如下图:
注释掉max_user_offline_message
2、在mysql中创建表
在ejabberd源码下找到sql文件夹,里面有个mysql.sql文件, 找到表spool,执行建表语句。
3、发送离线消息200条, 在spool存储了200条离线消息,问题解决。