自定义模块,用于在ejabberd

时间:2015-10-07 08:35:03

标签: erlang ejabberd

如何设计自定义模块,根据发件人设置的计划时间将消息发送到接收器

Erlang和ejabberd对我来说都是新手。完成教程http://metajack.im/2008/08/28/writing-ejabberd-modules-presence-storms/后, http://anders.conbere.org/2008/07/17/building_ejabberd_modules_-_part_2_-_generic_modules.htmlhttp://anders.conbere.org/2008/08/06/building_ejabberd_modules_-_part_4_-_xmpp_bots, 来自http://learnyousomeerlang.comhttp://docs.ejabberd.im/developer/hooks/的几个章节我提出了以下原始设计。

从发件人方面,

  1. 发件人可以发送新的“类型”节,其中包含消息和以xml属性编码的计划信息,然后发送到ejabberd服务器或

  2. 发件人可以将另一个日程安排xml属性标记添加到“message”节。这两种方法中哪一种更可取,还是有其他更好的选择?

  3. 过滤模块,使用 filter_hook 停止向接收方发送“预定消息”并启动一个进程,该进程将在“Mnesia”数据库中搜索预定消息 (或“schedule”类型节)并根据schedule参数设置计时器。一旦计时器超时,消息就从“Mnesia”数据库中取出并发送 到接收器。(“我假设这些消息存储在”Mnesia“数据库中供以后检索。如果不是这样,请纠正我)

    另一个使用 user_available_hook 的模块,它应该启动一个进程,在“Mnesia”数据库中搜索预定的消息(或“schedule”类型节) 并根据schedule参数设置计时器。一旦计时器超时,消息将从“Mnesia”数据库中取出并发送到接收器。这个模块是要处理的 接收器离线时发送的“预定消息”。

    但是这种设计很可能会降低性能,因为“Mnesia”数据库经常被搜索。设计这样一个模块有更好的选择或建议吗?

    编辑2:有关实际问题的更多说明 我们的想法是向xmpp客户端添加一项功能,发件人可以控制何时传递邮件(例如:提前发送生日祝贺但是会将其发送给接收者仅在生日时)而不是立即发送消息。

0 个答案:

没有答案