java - Java 消息服务 (JMS) 的用途是什么?

标签 java jms

我目前正在评估 JMS,但我不知道我可以用它做什么。

目前,我相信这将是一个用例:我想创建一个 SalesInvoice PDF 并在 SalesOrder 离开仓库时打印它,因此在交付交易期间我可以发送一个交易打印请求,该请求仅在 SalesOrder 交易完成时开始成功。

现在我发现大多数 JMS 产品都是独立服务器。

  • 为什么需要一个独立的服务器来处理消息,而不是例如。使用 Quartz 调度程序进行一些简单的 inproc 处理?
  • 它如何与我的应用程序交互?
  • 是不是太慢了?
  • 您已经成功实现了哪些用例?

最佳答案

JMS 是一个非常有用的系统,但并非适用于所有用途。

它本质上是一个用于在节点之间发送消息的高级框架,具有发现、鲁棒性等选项。

一个有用的用例是当您希望客户端和服务器相互通信,但客户端实际上没有服务器的地址(例如,您可能有多个服务器)。客户端只需要知道代理和队列/主题名称,服务器也可以连接。

JMS 还增加了健壮性。例如,您可以对其进行配置,以便如果在客户端发送消息时服务器死机或其他方式,您仍然可以从客户端发送消息或从服务器轮询消息。如果您曾经尝试过直接使用套接字来实现这一点 - 那将是一场噩梦。

您描述的场景听起来像是一个经典的 J2EE 问题,您为什么不使用 J2EE 框架? JMS 经常在 J2EE 中用于通信,但您可以获得所有其他好处。

关于java - Java 消息服务 (JMS) 的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3015178/

相关文章:

java - 两个BlockingQueue在同一个死循环中?

java - 在 Mac 中将 Play 脚本添加到您的 PATH

java - 将bean类型的事务返回到队列

java - JMS + Wildfly 8.2.0 最终版 : The following keys are invalid for configuring a connector: http-upgrade-endpoint

java - 生成绑定(bind)文件 Message Queue Broker 4.5

java - 升级Android项目以使用java 8并超出GC开销限制

java - 获取新的/更改的 java 方法的列表

java - 反射库在 Android 中返回空列表

java - Spring Boot-从 Java 类(而不是从应用程序属性文件)设置 JmsTemplate 配置属性

jms - 当今可扩展的大型站点使用何种消息传递架构?