JAVA消息(第一篇)JMS 很重要!!!!包教包会!!不闹!!!下一篇-AMQP(wire-level protocol)

如果看完:进入第二篇AMQP

首先大致讲一下,java 消息模块

消息,个人理解分为两种:1.同步消息(RPC调用)

                                    2.异步消息(本篇讲解部分)

    一.同步消息java提供了多种方案:

        最新比较常用的方式就是spring Http invoker(注:只在spring项目)和服务提供JAX-WS方式

   二.本文主要内容:异步消息

        异步消息首先分两处讲解:1.JMS(Java Message Service)

                                            2.AMQP(Advanced Message Queuing Protocol)

1.首先来讲解下,不同于同步消息,什么是异步消息。

        

客户端主服务不需要等待服务处理消息,简单来说就是不阻塞。

(单纯这样通过多线程RPC访问也能达到同样效果)

在异步消息中有两个主要概念:消息代理(message broker)

                                          目的地(destination)

注意:不同的消息系统会提供不同的消息路由模式,但是有两种通用的的目的地:

                                          1. 队列(queue)      2.主题(topic)

队列分好多种,大家记得就可以,本文主要讲解,远程队列,模版队列和动态队列!!!!!

      注:一个隐藏的mq概念(通道)!!!!!!!!        内容是在太多了              

上述通用的概念可以百度,在讲解JMS也会讲解到具体的

第一.JMS

(扯犊子讲下为啥需要知道JMS,jms消息的基础算是,acctiveMQ其实也是基于jms搞出来的)

    基本的概念:JMS是java message service,在java程序需要异步发送消息的时候使用的一种服务

    JMS主要的点(也是多种不同消息模式通用的点):1.点对点模式Point-to-Point(P2P)

                                                                         2.发布/订阅模式Publish/Subscribe(Pub/Sub)

   点对点:这种模式所涉及到的概念就是-1.发送者,2.接收者,3.消息队列(远程队列)

                先来个点用时序图方便大家理解:

                    当前模式需要了解的点:1.一个生产者之对应一个消费者

                                               2.生产者和消费者之间没有依赖,生产者只需要把消息丢到远程队列即可

                                               3.消费者从队列获取消息,即队列中的消息只有在被消费或者超时才会被销毁(所以消费者可以不用时时监听)

                                               (具体代码,我等结尾贴个开源代码,可以自己找)                                 

        发布/订阅模式:这种模式所涉及到的概念就是-1.发布者(Publisher),2.订阅者(Subscriber),3.主题Topic(模版队列+动态队列)

               是时候再贴一张图了:


当前模式需要了解的点:1.一个生产者之对应多个个消费者,即一条消息可以被多次消费。

                             2.默认情况下,当生产者生产消息的时候,消费者必须在线同事消费,即发布主题时,订阅者必须在线监听

                          3.为了接触订阅模式,消费者与主题的时间耦合,JMS提供可持久化订阅,这块是重点,即针对于某些特定的订阅者,Topic会缓存至其订阅者消费或消息超时。

如果看完:进入第二篇AMQP

这些在我的开源项目里都有:大家下载即可 下载项目
  • 21
    点赞
  • 118
    收藏
    觉得还不错? 一键收藏
  • 16
    评论
Classes contained in javax.jms.jar: javax.transaction.xa.XAResource.class javax.jms.BytesMessage.class javax.jms.Message.class javax.jms.JMSException.class javax.jms.Destination.class javax.jms.DeliveryMode.class javax.jms.Connection.class javax.jms.Session.class javax.jms.ConnectionMetaData.class javax.jms.ExceptionListener.class javax.jms.ServerSessionPool.class javax.jms.ConnectionConsumer.class javax.jms.Topic.class javax.jms.MapMessage.class javax.jms.ObjectMessage.class javax.jms.StreamMessage.class javax.jms.TextMessage.class javax.jms.MessageListener.class javax.jms.MessageProducer.class javax.jms.MessageConsumer.class javax.jms.Queue.class javax.jms.TopicSubscriber.class javax.jms.QueueBrowser.class javax.jms.TemporaryQueue.class javax.jms.TemporaryTopic.class javax.jms.ServerSession.class javax.jms.ConnectionFactory.class javax.jms.MessageNotReadableException.class javax.jms.MessageNotWriteableException.class javax.jms.QueueConnection.class javax.jms.QueueSession.class javax.jms.QueueReceiver.class javax.jms.QueueSender.class javax.jms.QueueConnectionFactory.class javax.jms.QueueRequestor.class javax.jms.TopicConnection.class javax.jms.TopicSession.class javax.jms.TopicPublisher.class javax.jms.TopicConnectionFactory.class javax.jms.TopicRequestor.class javax.jms.XAConnection.class javax.jms.XASession.class javax.jms.XAConnectionFactory.class javax.jms.XAQueueConnection.class javax.jms.XAQueueSession.class javax.jms.XAQueueConnectionFactory.class javax.jms.XATopicConnection.class javax.jms.XATopicSession.class javax.jms.XATopicConnectionFactory.class javax.jms.MessageEOFException.class javax.jms.TransactionRolledBackException.class javax.jms.MessageFormatException.class javax.jms.IllegalStateException.class javax.jms.JMSSecurityException.class javax.jms.ResourceAllocationException.class javax.jms.TransactionInProgressException.class javax.jms.InvalidDestinationException.class javax.jms.InvalidClientIDException.class javax.jms.InvalidSelectorException.class

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值