jms 是 java 消息队列的标准, activemq 是具体实现,还是不太懂

2015-11-21 22:36:17 +08:00
 li24361

谁能给个例子,或者比喻,原来一直就只会用 rabbitmq 和 rocketmq 这个轮子,结果系统里面别人用的封装的 mq ,看源码有点晕

2783 次点击
所在节点    程序员
8 条回复
HentaiMew
2015-11-21 22:50:07 +08:00
JMS 在 Java 里面跟 JPA 是同一个级别的概念,是一种与实现无关的规范。

完全遵循 JMS 标准的的 MQ 产品,是可以在几乎不动项目代码的基础上更换 MQ 的。
RabbitMQ 就不属于标准 JMS 实现。但是 MQ 的核心思想都是一样的。用例如 Spring 提供的 JMS API 时,更加能做到与具体 JMS 产品无关。
li24361
2015-11-21 23:02:19 +08:00
@HentaiMew 言简意赅,谢了,看来还是要多了解,不能只用轮子
julyclyde
2015-11-22 10:19:42 +08:00
@li24361 标准的好处就是让你很方便的 只用 轮子
li24361
2015-11-22 10:31:07 +08:00
@julyclyde 可是很多实用的轮子并没有遵循框架
li24361
2015-11-22 10:31:31 +08:00
@julyclyde 标准,说错了
wucao219101
2015-11-22 10:58:13 +08:00
举个栗子:最近我家里的淋浴的喷头坏掉了,我在想,是不是要换一个同样牌子的喷头才能接的上(但附近不一定能买到同样牌子的),或者要把一整套全换掉(感觉要花很多钱)。到了五金店我才发现多虑了,原来所有的喷头的接口都一样,也就是有一套统一的标准。

JMS 同样是制定的一套标准(代号 JSR 914 ),一系列 Interface 。消息队列的开发者可以根据这个标准来实现,这样一来,跟其他系统的集成,或者切换使用其他的消息队列,就非常方便。

Java 还有很多其他的标准,如 JAX-RS ( RESTful WebService 标准,代号 JSR 311 )、 JAX-WS 、 JDBC 、 JPA 。。。

其实都是类似于 Java 的接口和实现类, List list = new ArrayList(); 如果哪天觉得 ArrayList 性能不好,换成 LinkedList ,不用改变其他代码,多好~
broadliyn
2015-11-22 12:52:52 +08:00
activemq/rabbitmq 是 AMPQ 的具体实现——你可以理解成 nginx 、 apache 、 lighthttpd 、 tomcat 等服务器是 http 协议的具体实现

jms 是 java 消息队列的标准——你可以理解成 Servlet Api 是 java web 开发里与 http 请求、响应交互的标准接口
julyclyde
2015-11-24 18:02:58 +08:00
@li24361 你可以在符合标准的轮子里选嘛。那么多呢是吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/237945

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX