微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在自定义到期后销毁 Ejabberd 中的 MUC 房间的最佳实践

如何解决在自定义到期后销毁 Ejabberd 中的 MUC 房间的最佳实践

我们公开了一项服务,该服务允许客户在给定的到期时间内在 Ejabberd 中创建 MUC 房间。在此时间之后,无论房间是否处于活动状态,都应销毁房间。

我们目前通过以下方式实现这一目标:

  • 在创建房间时在房间选项中设置自定义到期时间元数据。
  • 运行一个 cronjob,查询 Ejabberd 的所有在线房间名称查询每个名称的房间选项,并请求在到期时销毁房间。

这种方法非常幼稚,随着房间数量增加,我们看到列表在线房间管理员调用失败的频率越来越高,并出现以下错误

2021-04-28 15:24:57.011582+00:00 [error] REST API Error: muc_online_rooms_by_regex([{<<"regex">>,<<".*">>},{<<"service">>,<<"ourchatservice">>}]) -> error:{badmatch,{error,notfound}} [{mod_muc_admin,get_room_config,1,[{file,"src/mod_muc_admin.erl"},{line,814}]},{mod_muc_admin,build_summary_room,3,394}]},

我们怀疑列表错误可能与我们正在使用的大量 MUC 房间有关 - 数以万计 - 我们正在寻找一种方法支持功能,而无需昂贵的操作,例如列出所有在线房间。

解决方法

muc_online_rooms_by_regex([{>,>

我想知道为什么使用 muc_online_rooms_by_regex 和 .* 一样无用的正则表达式,而不是简单地使用 muc_online_rooms...

我们公开了一项服务,该服务允许客户在给定的到期时间内在 Ejabberd 中创建 MUC 房间。在此时间之后,无论房间是否处于活动状态,都应销毁房间。

运行一个 cronjob,查询 Ejabberd 的所有在线房间名称,查询每个名称的房间选项,并请求在到期时销毁房间。

房间有非常严格和确定的到期时间,就像银翼杀手中的复制人一样,即使他们的神也不能延长他们的寿命?

在这种情况下,您可以在自己的房间名称中包含该到期时间,这样您就不需要查询房间详细信息:房间名称本身会说明房间应该何时销毁:bluetag_review__expiry_20210508@conference.localhost

在这种情况下,使用 muc_online_rooms_by_regex 列出房间名称为今天或前几天到期日期的房间是有意义的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。