`

oenfire component

阅读更多
我们的消息交换系统要有一个向 OPENFIRE 发送数据的接口,做为我们系统消息传入软交换系统的入口。看了不少源码,总结出有三个解决方案:

1、增加一个 module,启动一个 WEBSERVICE 接口,然后向 internal component 里增加一个子域名,实现一个 component 接口的消息处理类,用于答复自有消息。当自有消息发过来时,把发送人设置为此子域名,然后把消息交给 RoutingTable 去处理;消息回复时就可以直接发回到 component 里了。

2、自己在 JETTY 中启动一个 WEBSERVICE 接口,接收我们系统,在 WEB 容器中调用 RoutingTable 发送数据。这种方式当回复消息时只能在 RoutingTable 中硬编码,把特定消息交给一个特殊程序去处理。

3、我们系统以外部 component 方式连接到 component 上,在 RoutingTable 中注册一个子域,以 component 协议给 openfire 系统发消息。消息回复是 RoutingTable 会自动发给这个 component。

以上三种方中,第2种对系统改造大,对原系统的侵入也大,不予采用。第一种方式和第二种差不多,都是以模块方式接入,但第一种需要另外开发 webservice 接口。第二种需要写一个 component。开发量差不多。

再经过我们查找资料发现,在 openfire 源码库有已经写好的外部 component 的示例程序,名字叫 tinder,在openfire 的 SVN 中就可以下载到。

再根据我们的需求比较1和3方案。我们的系统有40多台机器做为消息来源,这些机器是对等的,也就是它们必须为同一子域。消息有两种类型,IQ 和 message,IQ 必须哪台机器发的请求,答复还要再回到这台机器上去。Message 的请求可以回复到任意一台机器。

于是查看两个方案是否能满足此需求,改造量有多大。读代码和测试中发现,方案1不能原生实现此功能,必须自己实现这种特殊的需求,比如给40多台消息来源机每台起一个名字,在消息回复时根据名字发到不同的机器;方案3本来以为连接必须注册为一个唯一域名,后来读代码发现,在 component 登录时就可以指定是否支持多连接,也就是多个 component 共用一个域名,openfire 在有消息发给此子域时,会自动选择不同的 componet 发送。这样的话 IQ 的回复那不胡乱找个机器回复了!?

经过测试发现,OPENFIRE 的 IQ 回复没有乱回,而是会回到发送IQ的那台机器。很是奇怪。读代码发现,原来它在收到 IQ 消息时会把 IQ 的消息 ID 保存一个列表,当有 IQ 回复时,会根据 ID 查找是哪个连接发的请求,回复消息再发还给它。真不错。那我们的需求就全部解决了。

方案3成了我们的正式解决方案。
分享到:
评论

相关推荐

    MX Component 4 安装包

    MX Component 4 是一款在IT领域中用于软件开发的组件库,主要面向.NET Framework环境,提供了丰富的用户界面控件和功能强大的开发工具。这个安装包是MX Component 4的完整版本,包含了所有必要的文件和资源,旨在...

    MX Component 4.16S

    ### MX Component 4.16S 软件概述 MX Component 4.16S 是三菱电机为方便用户在 C#、VB.NET 和 C++ .NET 等开发环境中与三菱 PLC 进行通信而提供的官方上位机通讯中间件。通过调用此软件中的 DLL 文件,开发人员可以...

    componentone注册码

    #### 一、ComponentOne简介 ComponentOne是一家专注于为.NET开发者提供高质量控件的软件公司。其产品线覆盖了WinForms、WPF、ASP.NET Web Forms、ASP.NET MVC、UWP等多个.NET平台。这些控件不仅功能强大、性能卓越...

    ComponentOne2011破解版

    ComponentOne2011破解版  ComponentOne Studio是美国ComponentOne公司开发的控件系列产品名,支持WinForms、WPF、ASP.NET、Silverlight、iPhone、Mobile和ActiveX等7个开发平台。  ComponentOne Studio基于最新的...

    ESP32添加自己的component_esp32

    在使用ESP32进行项目开发时,常常需要自定义组件(component)来满足特定的需求。本篇文章将深入探讨如何在ESP-IDF(ESP32的集成开发框架)中添加自己的component,以便更好地管理和组织代码。 首先,了解ESP-IDF的基本...

    MX Component3.0 安装包

    MX Component3.0是一款在IT行业内广泛使用的组件库,它为开发者提供了丰富的UI控件和功能模块,大大提升了开发效率,特别是在构建企业级应用时。这个"MX Component3.0 安装包"包含了所有必要的文件,使得用户能够...

    MX Component官方实例,winform版本,亲测可用

    MX Component是C#环境下连接三菱PLC( Programmable Logic Controller)的一种重要工具,它提供了丰富的API和类库,便于开发者在Windows Forms应用中实现与三菱PLC的数据交互。本实例集是官方提供的,经过实际测试,...

    ComponentOne Studio For ActiveX 2010 Vol1 cracked

    ComponentOne Studio for ActiveX 目前包括以下产品: SizerOne 通过这一4合1的构建集合ezai您的应用程序中增加缩放、标签和parsing的功能。 SizerOne是VS-OCX的最新版,包含两个缩放构件,可处理简单和复杂的缩放...

    MXComponent 64位实例和说明.zip

    MXComponent是一款专为VB(Visual Basic)开发的组件,用于实现上位机与三菱PLC(可编程逻辑控制器)之间的高效通信。这个64位实例是针对那些在64位操作系统下运行VB程序并需要与三菱PLC进行交互的开发者设计的。在...

    三菱PLC通讯组件MX Component Version 4编程手册,操作手册

    **三菱PLC通讯组件MX Component Version 4编程手册与操作手册概述** 三菱PLC通讯组件MX Component Version 4是一款强大的工具,专为简化与三菱PLC(可编程逻辑控制器)和运动控制器之间的通信而设计。它包含Active ...

    MX Component Version 4编程手册

    MX Component Version 4是一款强大的软件开发工具,它为程序员提供了高效、灵活且可扩展的组件库,适用于构建各种应用程序。本编程手册将深入探讨MX Component Version 4的核心特性和使用方法,帮助开发者充分利用其...

    C#与三菱MXComponent通讯协议.rar

    《C#与三菱MXComponent通讯协议详解》 在现代工业自动化领域,计算机与PLC(可编程逻辑控制器)之间的通信是至关重要的。本篇将详细阐述如何使用C#编程语言与三菱的MXComponent软件进行通讯,帮助开发者实现高效、...

    TMS Component Pack v9.2.4.0 D10.4 Sydney.rar

    《TMS Component Pack v9.2.4.0 D10.4 Sydney——Delphi开发的强大工具》 TMS Component Pack v9.2.4.0 D10.4 Sydney是一款由知名软件开发公司TMS Software精心打造的Delphi开发组件集合。这款组件包专为Delphi和...

    Learning Web Component Development

    Learning Web Component Development 中文译名《Web Component实战 》 探索PolymerJS、Mozilla Brick、Bosonic与ReactJS框架 此为英文版

    ComponentOne Studio 2010 V3 -- Keygen

    ComponentOne Studio 2010 V3 是一个由 GrapeCity 公司开发的全面的.NET开发工具集。这个工具包提供了大量的控件和组件,旨在帮助开发者构建高效、功能丰富的Windows Forms、ASP.NET以及WPF应用程序。在描述中提到的...

    MX Component 设置与C# Labview调用方法.pdf

    MX Component是三菱电机公司开发的一种组件,旨在实现MX系列PLC与上位机之间的通信。本文将详细介绍MX Component的设置方法以及如何在C#环境下通过LabVIEW软件调用该组件进行通信。 首先,用户需要完成MX Component...

    Mx_Component_Install.zip win7 x86 x64

    《Mx_Component_Install在Windows 7 x86与x64环境下的安装指南》 "Mx_Component_Install.zip" 是一个专为Windows 7操作系统设计的组件安装包,适用于32位(x86)和64位(x64)系统。这个压缩包内含的“Mx_Component_...

    component cascade tool 7.0.zip

    "component cascade tool 7.0.zip" 是一个用于微波仿真分析的软件工具包,主要功能在于级联多个微波组件以评估整个系统的性能。在微波工程领域,这种工具对于设计和优化通信、雷达系统以及其他微波技术应用至关重要...

    Delphi 控件 TMS Component Pack v8.3.4.0 XE10.2

    《Delphi控件TMS Component Pack v8.3.4.0 XE10.2详解》 在软件开发领域,Delphi作为一种高效且强大的Windows应用程序开发工具,因其丰富的库和组件而备受开发者喜爱。TMS Component Pack是针对Delphi平台的知名...

    ESP32 添加自己的component

    在ESP-IDF环境下添加自定义component,首先需要理解ESP-IDF框架的基本结构和工作原理。ESP-IDF是Espressif公司为其ESP32系列芯片提供的官方开发框架,它通过一系列的组件(components)来管理ESP32的各种功能模块。...

Global site tag (gtag.js) - Google Analytics