如何获取消息?使用JMS技术作为数据复制的解决方案

背景

在思考消息传递解决方案时,您可能会想到一个通过远程消息调用机制来集成两个不同应用程序的系统。一般来讲,对于不常通信的分布式实体以及数据传输量不是很多这样的情况,常常使用这种耦合。较经典的示例是,连接到异构后端和入口的同构接口,这些后端和入口指派进行用户请求的后端处理,然后为最终用户表示而对那些请求进行重新格式化。

消息传递方法中的公共线程一直有这样的假定:虽然消息传递解决方案在系统之间提供健壮、高度可用的通信,但它基本上效率很低,只用来作为在无法避免与外部系统通信时的最后一种手段。在出现远程方法调用(RMC)时关于消息传递的这种观点就开始流行一直到出现了更现代的象 CORBA 和 DCOM 那样的消息传递解决方案,而且,通常所应用的消息传递只局限于解决几类问题。

目标

在过去的十年中,人们对分布式系统需求有了更深入的理解。新兴技术(象 Java 和 .NET)已经包含了代码分布来作为它们基本编程模型的一部分。通过这样做,这些技术已将高度可用性和容错性融入到消息传递中,同时鼓励那些提供解决方案的供应商交付一些系统,这些系统在更广范围的问题上考虑性能。

近来我们公司被要求实现文件分布和复制的解决方案,在以前这样的方案需要集成安全的 FTP、数据库复制和其它一次性解决方案的定制系统。我们没有一味地埋头按照定制开发的道路前进,而是研究了将最新的消息传递解决方案应用到这个问题的可能性。我们发现 JMS 不仅为信息传送提供必要的基础结构,而且它还能处理我们客户要求的、与服务质量、安全性、可靠性和性能有关的所有基础结构问题。本文描述了我们团队面临的挑战,以及 JMS(以 MQSeries 的形式)如何让我们满足并超越客户的要求。

问题

我们的客户面临一个重大的分布式数据难题,在全国范围内有许多呼叫中心,在全国各地的呼叫中心里接线员要记录与客户之间的交互。必须快速可靠地在远程数据中心为这些记录建立索引并存档。建立索引和存档的存储过程不能影响接线员的系统记录和存储接线员正在与客户交互的信息的能力。该客户已经有了一个包含组合起来的代码、VPN 和其它技术的系统。但是,现有的解决方案远远达不到性能和可靠性上的目标,并且它是一种拙劣的技术,难以理解并且维护费用很高。

在开发替代客户原有系统时,我们考虑了 JMS 和多种非 JMS 的解决方案,尤其是那些基于 FTP 和安全复制(SCP)的解决方案。然而,非 JMS 解决方案有两个主要缺点:

它们对于安全性方面的缺陷一筹莫展。

它们提供的基础结构只适用于实际的数据传送,而对于处理可靠性、容错性、安全性、平台独立性以及性能优化等问题,需要定制开发来解决。

我们团队最后得出结论,对于添加这些额外的特性所需的开发工作是让人望而却步的,因此我们决定选用 JMS 解决方案,它可以摆脱这些问题。

解决方案

我们开发了一个基于 JMS 的系统,它:

为已记录的多媒体文件提供可靠存档

支持可扩展性,可以使多个数据中心接收文件

支持对其它数据类型进行存档

我们这里正讨论的文件比以前那些涉及消息传递解决方案的项目中传送的数据还要大(50K - 500K)。我们第一个任务是确保数据大小不会影响 JMS 解决方案。通过测试系统传递各种大小的消息有效负载时的性能,我们评估了包括 IBM MQSeries 在内的许多 JMS 解决方案。结果显示:经过适当配置,大小达到 1 兆的消息不会对整个系统性能产生显著影响。因为常识认为消息传递解决方案只适用于定期的、小的有效负载,所以我们的结果是一个重大发现。我们继续分析系统的体系结构(图 1 中概述了此体系结构),它可以提供客户需要的安全性、高可用性和可靠性。

图 1. 高级系统体系结构

现有的基础结构在每个客户机上有一个系统,当接线员与用户之间进行交互时,它创建多媒体文件,以此作为响应。此外,还需对这些文件进行存档。我们的系统启动一个进程(运行在每个机器上)并在已知目录中查找这些文件。当检测到新文件时,进程将它们打包成 JMS 有效负载并发送到其中一个数据中心的 JMS 服务器以便传递。一旦 JMS 服务器确认收到,则除去发送方中的这些文件。JMS 服务器将该数据传送到数据中心内的一个可用处理程序上,进行存档。

时间: 2024-09-16 07:42:04

如何获取消息?使用JMS技术作为数据复制的解决方案的相关文章

跪求各位大神,怎样才能获取各个银行实时汇率的数据呢?

问题描述 跪求各位大神,怎样才能获取各个银行实时汇率的数据呢? 解决方案 解决方案二:每天给我500块钱,再给我一个录入页面,我每天给你录入.解决方案三:人工操作内容,有时候也是"必需".你没看那些成功的网站几乎99%都是背后靠人力嘛.那些看上去好像非常整齐划一.彬彬有礼的"问答型"网站,一看就都是编辑辛苦地对文字进行整理出来的,伪装成用户上传的图片几乎都是专门的摄影师去拍摄的,虽然他们装的好像是一个自由的论坛一样.凡是内容看上去人工雕琢过甚的,几乎都是为了骗投资人

请问环信iOS SDK 有根据ID获取消息的方法吗?

问题描述 类似Android的 EMMessage message = EMChatManager.getInstance().getMessage(msgId); 这种 根据消息Id从数据库中获取消息实例的方法 ,有吗? 解决方案 /*! @method @brief 根据消息ID从数据库中加载消息 @discussion 如果数据库中没有这条消息, 方法返回nil @param aMessageId 消息ID @result 加载的消息 */- (EMMessage *)loadMessag

push消息,使用第三方提取数据,怎么获取用户设备状态

问题描述 push消息,使用第三方提取数据,怎么获取用户设备状态 push消息,使用第三方提取数据,怎么获取用户设备状态是联网还是杀掉了app进程 解决方案 这种的只能去找第三方了,不然还能怎么办 解决方案二: 看第三方服务的API文档

查询-消息表 如何获取消息表和消息状态

问题描述 消息表 如何获取消息表和消息状态 消息表 MSG-INFO IDTITLEISALL(是否发送给全部)消息关联表 MSG-USER IDMSGIDUSERIDISREAD消息可以发送给全部用户和指定用户,发送给指定用户时,添加数据到消息关联表,发送给全部用户时,不添加.在用户阅读后添加. 请问如何查询到指定用户的所有消息记录以及阅读状态.用户还需要查询消息状态.查询消息阅读状态的时候,因为发送给全部.无法查询到消息阅读记录. 解决方案 Http状态消息HTTP 状态消息HTTP 状态消

个推是移动消息推送技术服务商

个推现在每天向用户分发8亿条消息,但他们却觉得推送得太多了,未来的推送应该是"在合适的时间.合适的场景把合适的内容推送给合适的人".今天,个推在GMIC大会上发布了他们即将在6月面向所有开发者的个推2.0 Smart Push,希望帮助app摒弃打扰用户的盲目推送. 个推是移动(Android & iOS)消息推送技术服务商,服务的app包括新浪微博.去哪儿.招行.墨迹.唱吧.美图秀秀等.根据个推CEO方毅的介绍,个推目前在第三方推送服务的部署量上占了90%的市场份额,接入应用

分析3000份技术面试数据:这几大指标比你毕业于哪所学校更要紧

导读 到底在一次技术面试中,什么因素最为重要? 本文作者 Aline Lerner从interviewing.io(关于面试的输入输出流)中导出了3000份技术面试数据进行分析,并发现了对面试影响最大的几大因素.并且,他还得到了一个鸡血满满的结论:在求职技术面试中,毕业后做什么比毕业于哪所学校更要紧. 相关背景:interviewing.io是一个平台,人们可以在上面匿名练习技术性面试,并在这个过程中找到工作 - 在练习中做得好的话,您能(匿名!)得到像Uber.Twitch.Lyft或其他大公

mq队列问题-MQ返回队列中获取消息,messageId、correlationId作用

问题描述 MQ返回队列中获取消息,messageId.correlationId作用 从MQ返回队列中获取消息,MQMessage为什么要带上messageId.correlationId两属性 代码如下: 方式一: MQMessage m = new MQMessage(); MQGetMessageOptions gmo = new MQGetMessageOptions(); gmo.options = 3; gmo.waitInterval = this.timeout; if (mes

获取国美订单API接口数据问题

问题描述 获取国美订单API接口数据问题,具体问题是传入的参数有开始时间,结束时间,及订单状态信息,但是返回的数据总是全部订单数据,我全是按国美官方的API接口文档开发的,名称类型是否必须描述示例值默认值venderIdString是商家的id2003无methodString是API接口名称coo8.item.get无timestampString是时间戳,格式为yyyy-MM-ddHH:mm:ss,例如:2011-06-1613:23:30.服务端允许客户端请求时间误差为10分钟无vStri

smartweatherapi-Smartweatherapi接口,能够获取他七天的天气数据吗?

问题描述 Smartweatherapi接口,能够获取他七天的天气数据吗? 使用中国天气网Smartweatherapi接口,能够获取他七天的天气数据吗,似乎只能获取到三天. 解决方案 获取天气数据直接调用天气查询接口http://www.haoservice.com/docs/6 解决方案二: 谢谢你的答案,当初也参考过这个接口,因为要收费所以就没有采用了.