美文网首页
消息中间件学习之JMS(1)

消息中间件学习之JMS(1)

作者: 北你妹的风 | 来源:发表于2017-01-23 11:20 被阅读156次

      说到消息中间件,不得不提一下 JMS。JMS是java消息服务(Java Message Service)应用程序接口,是Java平台上有关面向消息中间件(MOM)的技术规范,是一套和厂商无关的API接口协议,只要遵循这套协议,哪个厂商都可以实现自己的JMS产品,比如Apache的ActiveMQ,JBoss的jbossMQ,OpenJMS,IBM的WebSphere MQ.等

     JMS常用于在两个系统之间,或者分布式系统之间发送消息,进行异步通信。除此之外,消息中间件还能在复杂的应用系统中起到解耦分层的作用,降低系统模块之间的强依赖。

    JMS的基本构件有连接工厂、连接、会话、目的地、生产者、消费者、消息等。下面依次介绍这些构件。

    1.连接工厂:类名是javax.jms.ConnectionFactory,作用是创建连接Connection。在ActiveMQ中,相对应的实现是ActiveMQConnectionFactory。代码如下:

connectionFactory = new ActiveMQConnectionFactory(

ActiveMQConnection.DEFAULT_USER,

ActiveMQConnection.DEFAULT_PASSWORD,

"tcp://localhost:61616");

2.连接:类名javax.jms.Connection,该类封装了客户与JMS Provider之间的一个虚拟连接。连接是由连接工厂生成的,代码如下:

      Connection connection=connectionFactory.createConnection();

3.会话:类名javax.jms.Session,JMS Session是生产和消费消息的一个单线程上下文,用于创建消息生产者(producer)、消息消费者(consumer)、消息(message)等。会话提供了一个事务性的上下文,在这个上下文中,一组发送消息和接收消息被组合到了一个原子操作中。session是由连接创建的,代码如下:

            Session session=connection.createSession(true,Session.AUTO_ACKNOWLEDGE);

在这个方法中有两个参数,第一个参数是布尔类型,表示是否支持事务。第二个参数表示用哪种确认方式。

4.目的地:类名javax.jms.Destination,目的地是客户用来指定它生产的消息的目标和它消费的消息的来源的对象。JMS规范中,定义了两种消息传递类型:点对点(PTP)和发布/订阅(publish/subscribe).

    点对点模式有以下一些特点:

   (a)每个消息只能有一个消费者

   (b)消息生产者和消费者没有时间上的相关性,无论消费者在生产者发送消息的时候是否处于运行状态,消费者都可以提取消息并进行消费。

   (c)在该模式下,目的地被称为消息队列queue

     发布/订阅模式有以下一些特点:

    (a)每个消息可以有多个消费者

    (b)生产者和消费者之间有时间上的相关性,订阅一个主题的消费者只能消费自它订阅之后发布的消息。JMS规范允许客户创建持久订阅,它在一定程度上放松了时间上的相关性要求。持久订阅允许消费者消费它在未处于激活状态时发送的消息。

    (c)在该模式下,目的地被称为主题topic

    相应代码如下:

   Destination destination=session.createQueue("queueName");//创建p2p模式的目的地

   Destination destination=session.createTopic("topicName");//创建发布订阅模式的目的地

5.消息生产者:类名javax.jms.MessageProducer,是由会话创建的一个对象,用于把消息发到一个目的地。代码如下:

        MessageProducer producer=session.createProducer(destination);

        producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);//设置发送模式,非持久化

6.消息消费者:类名javax.jms.Consumer,也是有会话创建的一个对象,用于接收发送到目的地的消息。消息消费一般有两种方式:

     (a)同步消费。通过调用消费者的receive方法,从目的地中显示提取消息。receive方法可以一直阻塞到消息到达。

     (b)异步消费。客户可以为消费者注册一个消息监听器,以定义在消息到达时所采取的动作。

    需要注意的是,同一个会话下的消费者,不能同时使用这两种方式进行消费。相关代码如下:

    MessageConsumer    consumer = session.createConsumer(destination); 

7.消息:一个JMS消息分为三部分,消息头、消息属性、消息体。JMS预定义的消息类型有TextMessage、 MapMessage、 BytesMessage、StreamMessage 和 ObjectMessage

相关文章

  • 1JMS基本概念

    JMS provider 实现JMS接口和规范的消息中间件 JMS message JMS的消息,消息由3部分组成...

  • 消息中间件学习之JMS(1)

    说到消息中间件,不得不提一下 JMS。JMS是java消息服务(Java Message Service)应...

  • 消息中间件-ActiveMQ详解

    1、消息中间件之JMS规范 什么是Java消息服务 Java消息服务指的是两个应用程序之间进行异步通信的API,它...

  • ActiveMQ

    Message Oriented Middleware, MOM 消息中间件消息中间件解决的问题: JMS规范 官...

  • RabbitMQ,消息中间件基础当中的AMQP协议

    知识要点: 什么是消息中间件 消息中间件的作用 消息中间件历史 JMS规范 AMQP协议 消息队列中间件(Mess...

  • 消息中间件元基础与原理解释,微服务系统你要懂得的JMS,AMQP

    消息中间件基础 知识要点: 什么是消息中间件 消息中间件的作用 消息中间件历史 JMS规范 AMQP协议 Rabb...

  • JMS

    慕课网Java消息中间件笔记 JMS定义 Java消息服务(Java Message Server)即JMS,是一...

  • ActiveMQ

    AMQ: JMS实现JMS接口的消息中间件Provider(MessageProvider):生产者Consume...

  • ActiveMQ(一) 简介

    JMS和ActiveMQ JMS(Java Messaging Service)是Java平台上有关面向消息中间件...

  • 消息中间件学习之JMS(2)

    本篇主要介绍JMS的消息确认机制。 JMS 消息只有在被确认之后,才认为已经被成功地消费了。消息的成功消费通常包含...

网友评论

      本文标题:消息中间件学习之JMS(1)

      本文链接:https://www.haomeiwen.com/subject/ifywbttx.html