JMS是java消息传递的API吗?我还不清楚像HornetQ这样的第三方API到底是做什么的?没有任何默认/引用实现吗?
发布于 2012-11-09 22:17:43
JMS只是一个规范,你可以选择任何你喜欢的实现:
每一个都将在规范之外提供不同的功能。
例如,HornetQ提供确认确认(因此您不需要阻塞等待确认的发送,并且可以将高级技术用于异步操作,如异步servlet)。
HornetQ还提供大型消息。
HornetQ还提供了一个核心应用程序接口,您可以在没有JMS的情况下使用它。
例如,我知道如果您不想使用JMS,也可以使用IBM的API。
所以,简而言之,Java消息服务- JMS只是一组java接口,您必须选择适当的实现。
发布于 2012-11-09 22:17:52
我觉得你把一些概念混在一起了。正如您所说,JMS是一种API (如果您愿意,也可以是一种规范)。简化的JMS定义了一组接口,这些接口必须由某些供应商实现。在您的示例中,您使用的是JBoss HornetQ。然而,还有其他的实现,比如Apache、ActiveMQ等等。因此,如果您愿意或者您的需求发生变化,您可以交换实现。
实现JMS的提供程序可能包括其他功能。但这些都是专有的,不在JMS规范中。因此,可能复制包含在一个提供程序中,而另一个提供程序不提供这种功能。
另一个例子可以在JDBC中找到。JDBC本身就是API,但是不同的数据库有不同的实现。JPA也是如此,Hibernate和Toplink是突出的例子。
https://stackoverflow.com/questions/13309399
复制相似问题