我目前正在评估 JMS,但我不知道我可以用它做什么。
目前,我相信这将是一个用例:我想创建一个 SalesInvoice PDF 并在 SalesOrder 离开仓库时打印它,因此在交付交易期间我可以发送一个交易打印请求,该请求仅在 SalesOrder 交易完成时开始成功。
现在我发现大多数 JMS 产品都是独立服务器。
- 为什么需要一个独立的服务器来处理消息,而不是例如。使用 Quartz 调度程序进行一些简单的 inproc 处理?
- 它如何与我的应用程序交互?
- 是不是太慢了?
- 您已经成功实现了哪些用例?
最佳答案
JMS 是一个非常有用的系统,但并非适用于所有用途。
它本质上是一个用于在节点之间发送消息的高级框架,具有发现、鲁棒性等选项。
一个有用的用例是当您希望客户端和服务器相互通信,但客户端实际上没有服务器的地址(例如,您可能有多个服务器)。客户端只需要知道代理和队列/主题名称,服务器也可以连接。
JMS 还增加了健壮性。例如,您可以对其进行配置,以便如果在客户端发送消息时服务器死机或其他方式,您仍然可以从客户端发送消息或从服务器轮询消息。如果您曾经尝试过直接使用套接字来实现这一点 - 那将是一场噩梦。
您描述的场景听起来像是一个经典的 J2EE 问题,您为什么不使用 J2EE 框架? JMS 经常在 J2EE 中用于通信,但您可以获得所有其他好处。
关于java - Java 消息服务 (JMS) 的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3015178/