问题标签 [messaging]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1223 浏览

uml - UML 是消息传递系统的良好表示法吗?

自从企业集成模式出版以来,人们一直在使用该书中介绍的符号来记录异步异构消息传递系统。

但是我们的商店或多或少地围绕着专门执行 UML 的专有文档工具进行了标准化。标准 UML 图之一是否适合记录异步消息传递系统,包括转换器、路由器等?如果是,是哪一个?如果不是,那么反对为此目的调整 UML 的杀手锏是什么?

0 投票
3 回答
3412 浏览

serialization - 为异步消息序列化对象

我正在考虑使用 AMQP(使用 qpid)来启用 Python 和 Java 服务的混合相互通信。基本的短信似乎很简单,但与我研究过的所有其他短信技术一样,它似乎停止了。除了构建即时消息应用程序之外,我认为发送字符串并不是一件特别有用的事情,但一个又一个示例演示了如何发送未格式化的文本。

我的直觉是使用 XML(反)序列化或类似的东西(JSON、YAML、协议缓冲区等),它们在两种语言中都有很好的库支持。这是最佳实践吗?如果是,人们会推荐哪种(反)序列化协议?还是我在某处遗漏了要点,并且应该很满足发送少量文本?

0 投票
3 回答
717 浏览

refactoring - 如何以面向对象的方式编写消息队列处理?

如果您必须编写从消息队列中获取消息并更新数据库中的表的代码,您将如何以一种好的方式来构建它。你会如何构建它?消息是 XML 数据,表中每行一个节点。表中的行可以被更新、删除或插入。

0 投票
2 回答
743 浏览

geolocation - 将多播传送到几个不同的地理位置

我需要在应用程序中使用一个基于逻辑 PGM 的多播地址,同时启用这样的应用程序“无缝”运行在几个不同的地理位置(例如美国/欧洲/澳大利亚)。

应用程序的吞吐量很大(每天有几百万条商业消息)和延迟要求很高,需要大量小但非常频繁地发送消息。由于某些外部延迟限制,Classic Atom pub 无法在此处工作。

我想出了几个连接这些数据中心的选项,但找不到最好的一个。我考虑过的选项是:1)通过VPN转发多播消息(VPN可以处理这么大的负载)。2) 将所有多播消息转换为“包装消息”并通过 AMQP 转发。3) 编写专门的内部网关,通过 TCP 将多播消息传送到其他两个位置。4)任何其他解决方案

我更喜欢选项 1,因为它不需要开发人员编写额外的代码。但恐怕它不会是可靠的连接。

申请此类连接是否有任何规则?

对于上述限制,关于地理配置的最佳网络配置是什么。

0 投票
10 回答
1947 浏览

xml - *您*如何在 Web 应用程序的世界中使用 XML?

背景
我正在研究当代 Web 应用程序中消息传递的效率,研究 XML 替代方案的使用。这是一个大学项目,其结果将公开发布——社区的参与度越高,回馈的结果价值就越大。

我需要尽可能多的实际使用中的 XML 示例,以便:

  • 完全理解当主机 A 与主机 B 交谈时使用 XML 的内容
    我当然可以想象应该/可能如何使用 XML。现实可能完全不同。
     
  • 对实际而非假设的数据执行测试
    XML 与技术 X 在现实生活数据集上的比较与 XML 与技术 X 在任意数据集上的比较同等重要
     
  • 识别和测量 XML 的任何使用模式,
     例如仅元素、元素加上一些属性或最少元素和重属性使用

问题

如何在 Web 应用程序的世界中使用 XML?

当主机 B 通过 HTTP 向主机 A 返回 XML 结构的数据时,会返回什么?这可能是在 AJAX 环境中返回数据的服务器,或者是从一个或多个其他服务器整理数据的服务器。

理想的答案包括:

  • HTTP 响应中 XML 的真实示例
  • 请求上述内容的 URL(如果相关)
  • 如果需要,解释数据代表什么
  • 解释(如果不是很明显)为什么要交换此类消息(例如,为了满足用户请求;主机 X 向主机 Y 返回健康状态报告)

我更喜欢制作、开发或工作过的应用程序/服务的示例,尽管欢迎任何示例。从 5 行 XML 文档到 10,000 行怪物,任何东西都很棒。

您自己对示例中使用 XML 的看法也很棒(例如,由于需求 X/Person Y,我们实现了 XML 结构的响应,尽管我认为 JSON 会更好,因为 ...;或者,我们使用 XML这样做是因为 [非常好的理由],而且它只是这项工作的最佳选择)。

更新
我非常感谢关于 XML 主题的所有答案,但是我真正在寻找的是包含 XML 的 HTTP 响应主体的真实示例

我目前相当了解 XML 的历史,可能存在哪些常见的替代方案,以及它们在功能和适用性方面如何比较给定场景。

更大的好处是了解当前如何在 HTTP 主机之间交换数据时使用 XML,而不管当前的使用是否正确或合适。错误应用 XML 的例子与正确应用 XML 的例子一样有价值。

0 投票
1 回答
591 浏览

messaging - ActiveMQ 在创建大量主题时抛出 OOME

我正在使用 ActiveMQ 5.2,我的应用程序需要大量主题,大约 500,000 个。当我运行我的应用程序时,只创建了大约 1000 个主题后,ActiveMQ 会引发 OutOfMemoryException。

期望 ActiveMQ 支持这么多主题是不是很不合理?

这种用法是否有最佳配置?

该线程详细说明了该问题: http: //www.nabble.com/java.lang.OutOfMemoryError%3A-unable-to-create-new-native-thread-on-AMQ-5.0-td17005441.html

0 投票
6 回答
7218 浏览

queue - 消息、队列和 ESB - 我知道我想去哪里,但不知道如何到达那里

长话短说,我正在开展一个项目,出于所有常见原因,我们正在重写一个大型 Web 应用程序。重写的主要目的是将运行在单个服务器上的大型单个应用程序分成许多较小的解耦应用程序,这些应用程序可以在许多服务器上运行。

好的,这就是我想要的:

我想HTTP成为主要的传输机制。当一个应用程序(例如 CMS)已更新时,它将通过 http 联系代理并说"I've changed",然后代理将发回一个200 OK"thanks I got the message"

然后,代理将查看其想要了解 CMS 更改的其他应用程序列表,并将消息传递到应用程序在告诉代理它想听到消息时留下的 url。

其他应用程序将200 OK在收到消息时返回,如果没有,代理会保留该消息并将其排队等待下次有人尝试联系该应用程序。

问题是我什至不知道从哪里开始或者我需要什么来实现它。我一直在看XMPPActiveMQ、等RabbitMQMule ESB并且可以看到我可以在接下来的一年里用这些东西绕圈子。

任何人都可以从个人经验中提供任何建议,因为我很想避免以艰难的方式学习课程。

0 投票
1 回答
1373 浏览

xml - 无法将 xml 转换为 SOAP

我在使用 Axis 从 Mule 调用 Web 服务时遇到问题。我创建了一个相当简单的示例,其中我在 Mule 读取的文件中有 xml,然后将其转换为 Document 并发送到 Web 服务。mule 配置中的相关代码如下所示:

但是,对 web 服务的调用失败,因为上面的配置正在生成一个 SOAP 消息,该消息在<value0>标签之后带有一个标签,并在该标签之前关闭它。生成的 SOAP 消息如下所示:

该网络服务在没有标签的 SOAPUI 中运行良好,<value0>从我在 Mule 网站上阅读的内容来看,我不知道为什么要插入它。

0 投票
1 回答
1745 浏览

messaging - Google 的协议缓冲区是否用于大规模生产应用程序?

Google 的Protocol Buffers是否用于生产中的大规模生产应用程序?

使用它是什么体验?

0 投票
3 回答
3355 浏览

windows - PostMessage 偶尔会丢失一条消息

我编写了一个多线程 Windows 应用程序,其中线程:
A – 是一个处理用户交互并处理来自 B 的数据的 Windows 窗体
。B – 偶尔生成数据并将两个 A 传递给它。

线程安全队列用于将数据从线程 B 传递到 A。入队和出队函数使用 Windows 临界区对象进行保护。

如果调用 enqueue 函数时队列为空,该函数将使用 PostMessage 告诉 A 队列中有数据。该函数检查以确保对 PostMessage 的调用成功执行,如果不成功则重复调用 PostMessage(PostMessage 尚未失败)。

这在相当长的一段时间内运行良好,直到一台特定的计算机开始丢失偶尔的消息。丢失的意思是, PostMessage 在 B 中成功返回,但 A 从未收到消息。这会导致软件出现冻结。

我已经想出了几个可接受的解决方法。我很想知道为什么 Windows 会丢失这些消息,以及为什么这只发生在一台计算机上。

这是代码的相关部分。