我目前正在评估JMS,但我没有得到我能用它的东西.
目前,我认为这将是一个Usecase:我想创建一个SalesInvoice PDF并在SalesOrder离开Warehouse时打印它,因此在Delivery事务期间,我可以发送一个事务性打印请求,该请求刚刚在SalesOrder事务成功完成时开始.
现在我发现大多数JMS产品都是独立服务器.
Uri*_*Uri 45
JMS是一个非常有用的系统,但不是出于各种目的.
它本质上是一个在节点之间发送消息的高级框架,具有发现选项,健壮性等.
一个有用的用例是当您希望客户端和服务器相互通信,但客户端实际上没有服务器的地址时(例如,您可能有多个服务器).客户端只需要知道代理和队列/主题名称,服务器也可以连接.
JMS还增加了稳健性.例如,您可以对其进行配置,以便在客户端发送消息时服务器发生故障或相反,您仍然可以从客户端发送消息或从服务器轮询消息.如果您曾尝试使用套接字直接实现此功能 - 这是一场噩梦.
您描述的场景听起来像是一个经典的J2EE问题,为什么不使用J2EE框架?JMS经常在J2EE中用于通信,但是您获得了所有其他好处.
Pas*_*ent 17
什么是Java消息服务(JMS)
JMS是一种消息传递标准,允许Java EE应用程序以松散耦合,可靠和异步的方式创建,发送,接收和使用消息.我建议阅读Java消息服务API概述以获取更多详细信息.
为什么需要使用独立服务器进行消息处理,例如使用Quartz调度程序进行一些简单的inproc处理?
当然,在您的情况下,Quartz是一种选择.但是如果发票系统是远程系统怎么办?如果您不想等待答案怎么办?如果远程系统在您想要与之通信时关闭怎么办?如果网络不总是可用怎么办?这就是JMS的用武之地.JMS允许发送保证交付的消息并以事务方式使用它(发送或消费消息可以是全局事务的一部分).
它如何与我的应用程序交互?
JMS支持两种通信模式:点对点和发布/订阅(如果这回答了问题).
是不是太慢了?
我一直在与之合作的MOM非常快.
您已成功实施哪些用例?
用于预订应用程序,银行后台(处理市场数据)等系统,或者更简单地用于发送电子邮件.
为什么需要使用独立服务器进行消息处理,例如使用Quartz调度程序进行一些简单的inproc处理?
JMS的优势在于,您可以为同一队列拥有多个生产者和多个使用者,并且JMS代理管理负载.
如果您有多个生产者但只有一个消费者,您也可以使用其他方法,例如石英调度程序和数据库表.但是一旦你有多个消费者,锁定方案就变得很难设计; 最好选择已经批准的消息解决方案.有关更多详细信息,请参阅我的其他答案: 为什么选择JMS进行异步解决方案?和使用数据库的生产者/消费者系统
其他几点太模糊,无法回答.
| 归档时间: |
|
| 查看次数: |
40387 次 |
| 最近记录: |