我使用 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”表中。