在 mysql 中存储 ejabberd muc room 数据

在 mysql 中存储 ejabberd muc room 数据

我使用 ejabberd 提供的 mucSub 功能实现了群聊。

目前,发送到 muc room 的消息都存储在 mnesia 数据库中,每当我重新启动服务器时,消息历史记录就会丢失。我需要将它们存储在 mysql 中。我希望能够随时检索 muc room 历史记录,就像 whats app 一样。

这是我的 mod_mam 和 mod_muc 配置:

mod_mam:
   default: always
   db_type: sql
mod_muc:
 db_type: sql
 access:
   - allow
 access_admin:
   - allow: admin
 access_create: muc_create
 access_persistent: muc_create
 default_room_options:
   mam: true
   persistent: true

有谁能帮我解决这个问题?谢谢

答案1

每当我重新启动服务器时,消息历史记录就会丢失

是的,最近的房间消息历史记录存储在 RAM 中,当服务器停止时会丢失。这是 mod_muc 提供的功能,如 XEP-0045 中所述。正如您所注意到的,最近的历史记录已丢失,因此对于您来说,最好关注 mod_mam,它实现了 XEP-0313,并且消息持久存储在数据库中。

目前,发送到 muc room 的消息都存储在 mnesia 数据库中

通过该配置,您看到发送到房间的新消息存储在 Mnesia 的“archive_msg”表中吗?

我尝试使用 ejabberd 18.12 进行配置,消息正确存储在 MySQL 的“archive”表中,而不是 Mnesia 的“archive_msg”表中。

相关内容