首先需要理解下JMS是什么?
java消息服务程序接口,是java中面向消息中间件的api.(是接口也是API)
用于在分布式系统中进行异步通信。(消息发送和接收)
JMS的体系架构-常用名词
JMS提供者(实现者):如ActiveMq,JbossMq等
JMS生产者和消费者: 生产者负责创建并发送消息给客户,消费者负责接收和处理消息的客户。
JMS队列: 一个容纳发送后待消费/阅读的区域。
JMS主题: 是一种机制,支持发送消息给多个订阅者的机制。
JMS中涉及到的对象
连接工厂: 客户端通过JNDI查找连接工厂,然后利用连接工厂创建一个JMS连接。 也就是用来创建JMS连接的。
JMS连接:JMS客户端和服务端之间的一个活动的连接,是客户端创建的。
JMS会话: session标识客户端和服务端之间的连接会话状态,建立在JMS连接上,标识一个会话进行的状态。
消息类型: 分为队列, 发布/订阅类型。
JMS部分理解,借鉴大牛博客,非常感谢!
http://blog.youkuaiyun.com/jamebing/article/details/53321093
ActiveMQ:
ActiveMQ启动指导,借鉴大牛博客:
http://blog.youkuaiyun.com/gaohuanjie/article/details/37737141
ActiveMQ占用两个端口,一个是负责接收发送消息的tcp端口:61616,一个是基于web负责用户界面化管理的端口:8161。
ActiveMQ的管理页面中经常用到的模块解释
queue:(点对点消息模式)
Number of Pending Message 生产了的消息的数目
Message Enqueued 在排队等待被消费,即使消费过了,还是会显示
Number of Consumers 代表消费者的个数
Message Dequeued 代表有几条消息被消费
Consumers,我们可以看到这个消费者的详细信息
这里讲解下异步和同步的理解/区别:
同步就是指一个进程在执行某个请求的时候,若该请求需要一段时间才能返回信息,那么这个进程将一直等待下去,直到收到返回信息才继续执行下去。
异步是指进程不需要一直等下去,而是继续执行下面的操作,不管其他进程的状态。当有消息返回时系统会通知进程进行处理,这样可以提高执行的效率。
代码配置方面的配置流程:(大致)
发送方:
1,配置connectionFactory。
-管理者,spring提供
-实际工作者,JMS服务商提供。
2,配置消息的发送对象
如JMSTemplate
3,配置消息模式
-点对点
-发布订阅
4,创建通道名称。
-必须和消费方保持一致
发现点:
对于点对点模式,如果有多个消费者,那么随机分配或者轮流消费。
个人理解,有错误的地方,欢迎各位大牛批评指正!