使用自定义 mysql 模式的模块扩展 ejabberd?
Posted
技术标签:
【中文标题】使用自定义 mysql 模式的模块扩展 ejabberd?【英文标题】:extending ejabberd with modules for custom mysql schema? 【发布时间】:2015-01-14 08:10:26 【问题描述】:我使用的是自定义 mysql 架构而不是 ejabberd.sql(由于遗留原因)。
我将对某些活动进行一些数据库操作,例如 Ping、Pong、Msg 传递、Msg 读取以及最重要的是获取/设置名册列表和宣布存在(所有这些都在我自己的架构上)。
然而,ejabberd 似乎自始至终都在使用 ejabberd.sql,而且它的源代码在很大程度上依赖于它。因为我不知道它的依赖关系,所以我最不想做的就是修改源代码。
可能的想法:
假设我通过编写自己的模块来扩展 ejabberd,那么 mod_roster_odbc 有什么用处?我只是不想放弃 ejabberd 的所有功能,但除了在这里使用自定义模式之外我别无选择。
或
我是否需要修改odbc_queries和ejabberd_odbc中的每一个查询。如果有某个集中的模块可以让我修改查询,在不影响ejabberd和谐的情况下到处反映它,它会很棒。
总而言之,我想避免处理依赖关系并尽可能以最聪明的方式完成我的工作。但我对最好的方法可能是什么含糊不清?
【问题讨论】:
您可能应该获得赏金——我认为这种情况或解决方案与您最初设想的情况不太相符。 我不认为我们可以收回赏金。如果您认为它可以产生任何影响,请随时编辑问题。 @zxq9 : 我正在研究可能性,让我们看看。如果可能的话,我会尽量不打扰 ejabberd。谢谢 【参考方案1】:编辑在详细了解 OP 的情况后更改此答案。
您心目中的用例要求将核心业务数据和聊天服务严格分离。聊天必须被视为一种外部服务,而不是整个系统不可或缺的东西(即使从用户的角度来看它是一种“核心”服务,聊天也不应该被硬连接到帐户管理中)。
使用现有基础架构作为进行身份验证的地方,并使用 ejabberd 独立设置聊天并将其配置为对您的核心服务进行外部身份验证调用。
如果您需要保留或包含旧版聊天数据,您可以将其导入 ejabberd 架构(不太好),或者将旧版聊天系统保留为“只读模式”并让所有新聊天都通过 ejabberd(更好,特别是如果您花时间使界面与用户无缝)。如果您需要将遗留数据用于分析目的,那么您应该将其导出到分析架构并提取(批量、笨拙)或反映(实时,更好)ejabberd 数据到相同的架构进行分析。
无论你做什么,都不要给核心系统增加聊天任务,也不要给聊天系统增加分析任务。这些东西应该是高度独立的,如果您的系统非常大或有很高的稳健性要求(并且您的预算适合),甚至可以在不同的硬件上运行。
【讨论】:
以上是关于使用自定义 mysql 模式的模块扩展 ejabberd?的主要内容,如果未能解决你的问题,请参考以下文章
Strapi - 如何使用自定义属性扩展 graphql 类型模式?
BurpSuite系列----Extender模块(扩展器)
BurpSuite系列----Extender模块(扩展器)