看起来像ATG的JMS实现是通过调度程序来实现的,它通过SqlJmsProvider组件轮询特定时间间隔的数据库。我同意ATG的DMS确实提供了队列,主题,持久订阅者,重试等所有JMS功能......但是不使用调度程序来轮询数据库以发送ATG订单到履行是一种矫枉过正的行为? (查询太多解雇)ATG DMS是真正的JMS实现
0
A
回答
1
从它解释说,有内ATG提供了两个JMS提供者ATG Documentation:
- SQL JMS
- 本地JMS
两者之间是差异:
本地JMS是同步的并且速度非常快。它在单个事务中运行,并绑定到单个进程,因此在发送消息时,会在等待确认时发生阻塞。另一方面,SQL JMS是异步的,可以跨进程使用(因此Commerce上的订单提交可以在履行中处理)。 SQL JMS是非阻塞的,因此一旦将消息放入队列中,请求的进程就可以继续。这也意味着即使履约情况下降,商务部也可以继续运行。这些消息也会在SQL JMS中保留,而它们是无状态的,并且会在重新启动本地JMS期间丢失。
使用调度程序轮询队列是一个可接受的解决方案,大多数旧的异步消息队列实现了此解决方案。在IBM MQ Version 7中,性能通过减少轮询的数量得到了改善,例如,该解决方案也基于队列的常规轮询。
所以不,在预定的时间间隔轮询数据库不是一个矫枉过正的问题。
相关问题
- 1. ATG中formginglers的Mockito实现
- 2. 这是Singleton Pattern的真正实现吗?
- 3. 真正的通用实现
- 4. 实现真正的服务
- 5. JMS Wildfly实现
- 6. jms队列实现
- 7. JMS使用Scala实现队列实现
- 8. MVC在JAVA中的真正实现
- 9. 测试:stub vs真正的实现
- 10. 实现真正的并行python C-Extension
- 11. 嘲笑仓库,然后在Node.js中实现真正的实现
- 12. 如何实现JMS MessageListener?
- 13. JMS消息传递实现
- 14. IBM MQ vs JMS - Spring实现
- 15. MySQL/InnoDB是否实现真正的可序列化隔离?
- 16. clojure.lang真的只是实现细节?
- 17. 确实devicePixelRatio是真正有用的
- 18. 是否存在真正的ECMAScript实现,还是仅仅是一个规范?
- 19. OMS中的TriggerEvent不是DMS
- 20. 在SwiftMQ实现JMS中的page.db大小
- 21. 是使用JMS可以实现的IBM MQ消息分段吗?
- 22. 真实世界的接口实现
- 23. 实现远程JMS服务器
- 24. Java JMS混合消息传递实现
- 25. 你使用哪种JMS实现?
- 26. 如何在Android项目上实现JMS
- 27. 什么是真正的“Angularesque”方式来实现textarea字段上的maxlength?
- 28. Asse田:预计[真]是真实的
- 29. 有没有开源的真正的路线图路由实现?
- 30. 实现真正boost的最简单的方法:: asio :: async_read_until
我的理解是批处理和JMS是为不同目的而设计的。所以想知道是否使用调度器方法来轮询Order(以便发送到履行)是ATG使用的最佳方法。我问这是因为在其中一个项目中 - 我们没有使用Fulfillment模块,而是使用自定义调度程序轮询订单,然后将其发送到Fulfillment。 – user1339772
因此,商务需要通过一些Message Queue与另一个系统通话,对吧?如果我理解你对'JMS'和'Batch'的正确引用,你认为JMS方法是'同步的'?因此,商务会阻止,直到它获得履行系统的响应。这一切都在'推'系统上运作。通过使用“批处理”处理,您将变为异步,并且Commerce可以继续。履行会通过将他们从队列中拉出来处理消息。大多数消息传递系统以异步方式工作,并且必须以某种方式轮询队列以知道是否处理任何消息。 – radimpe
如果我的描述模糊,我很抱歉。我只是无法找到使用ATG的JMS而不仅仅是调度程序发送数据来履行的理由。我的履行仅仅是一个web服务调用,我不介意使用调度程序对订单进行轮询,而不是使用DMS机制来实现相同的目标。因为使用DMS,我只是向数据库(消息)添加负载,消息接收器将不得不调用履行Web服务。 – user1339772