java - 即发即忘与 http 请求相比

标签 java spring jms xmpp activemq

我正在寻求大家的意见。我有一个 Web 应用程序需要将数据记录到另一个 Web 应用程序数据库中。由于延迟问题,我不喜欢在第二个应用程序上使用 HTTP 请求 GET。我正在寻找快速保存第二个应用程序记录的方法,我遇到了“即发即忘”的想法,JMS 适合这种情况吗?据我了解,JMS会保证消息的传递,保证消息是否100%传递并不重要,只要能服务尽可能多的请求即可。假设我需要每秒至少 1000 个随机请求调用第二个应用程序,我应该使用 JMS 吗? HTTP 请求?还是 XMPP?

最佳答案

我认为您总体上误解了网络。绝对没有理由认为 HTTP GET 一定会比其他任何方式都慢,而且如果 HTTP 利用保持 Activity ,它会比大多数选项更快。

JMX 不是一个协议(protocol),它是一个封装了许多其他协议(protocol)(可能包括 HTTP 或 XMPP)的规范。

最后,在 Java 运行的级别上,要么是 UDP,要么是 TCP。 TCP 通过保证交付(通过重传)和排序而产生更多开销。 UDP 既不提供保证传送,也不提供按顺序传送。如果您可以处理 UDP 的限制,您会发现它“更快”,如果您不能,那么任何轻量级 TCP 包装器(HTTP 就是其中之一)都差不多。

关于java - 即发即忘与 http 请求相比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2531985/

相关文章:

java - 在 Oracle 数据库中调用查询时绑定(bind)后更改参数值

java - 插入大量行而不将实体附加到持久性上下文

java - 是否可以在运行时手动将消息驱动的 bean 订阅到 JMS 队列/主题?

java - Java Set 接受重复的 String[] 吗?

java - 如何将多个命名参数传递给 Spring JdbcTemplate?

java - 创建工厂 - 在构造函数中提供数据还是作为参数?

java - 无法创建表: Hibernate

jakarta-ee - 如何让我的 MDB 忽略来自它自身的消息?

java - 单线程与多线程 JMS 生产者

java - 将二维数组值更改为零