首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ejabberd: mom_mam抛出错误

ejabberd: mom_mam抛出错误
EN

Stack Overflow用户
提问于 2018-05-21 10:01:13
回答 1查看 74关注 0票数 0

我刚刚从源代码(18.04)安装了MySQL支持的ejabberd,并分别更改了配置文件。基本上一切正常: ejabberd启动,我可以注册用户,用户可以连接和发送消息。我还看到了数据库中的所有用户,因此我假设设置是正确的。

现在,我想使用mod mod_mam来归档所有消息。为此,我在ejabberd.yaml文件中添加了以下行:

代码语言:javascript
复制
modules:
  ...
  mod_mam:
    db_type: sql
    default: always
  ...

但是,当我发送脱机消息时,我会得到以下错误--实际上,两个函数使用两个脱机消息钩子都有两个类似的错误:

代码语言:javascript
复制
[error] <0.541.0>@ejabberd_hooks:safe_apply:383 Hook offline_message_hook crashed when running mod_mam:offline_message/1: 
** Reason = {error,function_clause,[{mod_mam,offline_message,[{file,"src/mod_mam.erl"},{line,366}],[ok]},{ejabberd_hooks,safe_apply,[{file,"src/ejabberd_hooks.erl"},{line,380}],4},{ejabberd_hooks,run_fold1,[{file,"src/ejabberd_hooks.erl"},{line,364}],4},{ejabberd_sm,route,[{file,"src/ejabberd_sm.erl"},{line,143}],1},{ejabberd_local,route,[{file,"src/ejabberd_local.erl"},{line,73}],1},{ejabberd_router,do_route,[{file,"src/ejabberd_router.erl"},{line,368}],1},{ejabberd_router,route,[{file,"src/ejabberd_router.erl"},{line,93}],1},{ejabberd_c2s,check_privacy_then_route,[{file,"src/ejabberd_c2s.erl"},{line,823}],2}]}

使用较旧的安装(17.01),一切正常。但我不知道是否需要额外的MySQL表。当我查看当前数据库时,实际上所有的消息(包括脱机消息)都存储在表archive中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-22 20:40:27

您是只使用ejabberd中包含的模块,还是安装了任何贡献模块或其他自定义模块?

请注意,offline_message_hook在17.03中从"run“(没有累加器)更改为"run_fold”(带有累加器),这意味着函数调用的结果将传递给下一个函数,直到全部完成或停止挂钩为止。

参见提交:https://github.com/processone/ejabberd/commit/e564f9ae31d2c5345be4eed66e70037ba8145dc1和钩子文档:https://docs.ejabberd.im/developer/guide/#hooks

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50446361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档