`

深入掌握JMS 系列 1~12

    博客分类:
  • Java
阅读更多

深入掌握JMS(一):JMS基础

http://blog.csdn.net/zhangxs_3/archive/2009/03/29/4034713.aspx

深入掌握JMS(二):一个JMS例子

http://www.360doc.com/content/090712/20/18042_4241651.html

深入掌握JMS(三):MessageListener

http://www.ruanko.com:9090/uchome/space.php?uid=727&do=blog&id=7726

深入掌握JMS(四):实战Queue

http://www.360doc.com/content/090712/20/18042_4241594.html

深入掌握JMS(五):实战Topic

http://www.360doc.com/content/090712/20/18042_4241563.html

深入掌握JMS(六):消息头

http://www.ruanko.com:9090/uchome/space.php?uid=727&do=blog&id=7731

深入掌握JMS(七):DeliveryMode 例子

http://www.360doc.com/content/090712/20/18042_4241426.html

深入掌握JMS(八):JMSReplyTo   

http://www.360doc.com/content/090712/20/18042_4241367.html

深入掌握JMS(九):Selector   

http://www.360doc.com/content/090712/20/18042_4241298.html

深入掌握JMS(十):JMSCorrelationID&Selector   

http://www.360doc.com/content/090712/20/18042_4241252.html

深入掌握JMS(十一):TemporaryQueue&TemporaryTopic 

http://www.360doc.com/content/090712/21/18042_4241975.html

深入掌握JMS(十二):MDB 

http://www.360doc.com/content/090712/21/18042_4242116.html

 

jms服务器是 apache-activemq-5.2.0

需要倒入的包有 activemq-all-5.2.0.jar

http://www.360doc.com/content/090712/20/18042_4241298.html

Example 1

 

ConnectionFactory---->Connection--->Session--->Message
  Destination + Session------------------------------------>Producer
  Destination + Session------------------------------------>MessageConsumer

首先需要得到ConnectionFactoy和Destination,这里创建一个一对一的Queue作为Destination。
 ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("vm://localhost");
  Queue queue = new ActiveMQQueue("testQueue");

然后又ConnectionFactory创建一个Connection, 再启动这个Connection:
  Connection connection = factory.createConnection();
  connection.start();

接下来需要由Connection创建一个Session:
  Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE)
    现在暂且不用管参数的含义, 以后会详细讲到.

下面就可以创建Message了,这里创建一个TextMessage。
  Message message = session.createTextMessage("Hello JMS!");

要想把刚才创建的消息发送出去,需要由Session和Destination创建一个消息生产者:
  MessageProducer producer = session.createProducer(queue);

下面就可以发送刚才创建的消息了:
  producer.send(message);

消息发送完成之后,我们需要创建一个消息消费者来接收这个消息:
  MessageConsumer comsumer = session.createConsumer(queue);
  Message recvMessage = comsumer.receive();

消息消费者接收到这个消息之后,就可以得到它的内容:
  System.out.println(((TextMessage)recvMessage).getText());

 

import javax.jms.Connection;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.command.ActiveMQQueue;

public class MessageSendAndReceive {

    public static void main(String[] args) throws Exception {
       ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("vm://localhost");
   
        Connection connection = factory.createConnection();
        connection.start();
       
        Queue queue = new ActiveMQQueue("testQueue");
       
        final Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
        Message message = session.createTextMessage("Hello JMS!");
       
        MessageProducer producer = session.createProducer(queue);
        producer.send(message);
   
        System.out.println("Send Message Completed!");
       
        MessageConsumer comsumer = session.createConsumer(queue);
        Message recvMessage = comsumer.receive();
        System.out.println(((TextMessage)recvMessage).getText());
    }

}

 

Example 2 实战Queue

import javax.jms.Connection;
import javax.jms.DeliveryMode;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.command.ActiveMQQueue;

public class QueueTest {

    public static void main(String[] args) throws Exception {
        ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("vm://localhost");
   
        Connection connection = factory.createConnection();
        connection.start();       

        // 创建一个 Queue
        Queue queue = new ActiveMQQueue("testQueue");

        // 创建一个 Session
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);       

        // 注册消费者 1
        MessageConsumer comsumer1 = session.createConsumer(queue);
        comsumer1.setMessageListener(new MessageListener(){
            public void onMessage(Message m) {
                try {
                    System.out.println("Consumer1 get " + ((TextMessage)m).getText());
                } catch (JMSException e) {
                    e.printStackTrace();
                }
            }
        });       

        // 注册消费者 2
        MessageConsumer comsumer2 = session.createConsumer(queue);
        comsumer2.setMessageListener(new MessageListener(){
            public void onMessage(Message m) {
                try {
                    System.out.println("Consumer2 get " + ((TextMessage)m).getText());
                } catch (JMSException e) {
                    e.printStackTrace();
                }
            }
           
        });       

        // 创建一个生产者,然后发送多个消息。
       
MessageProducer producer = session.createProducer(queue);
        for(int i=0; i<10; i++){
            producer.send(session.createTextMessage("Message:" + i));
        }
    }
}

  运行这个例子会得到下面的输出结果:

Consumer1 get Message:0
Consumer2 get Message:1
Consumer1 get Message:2
Consumer2 get Message:3
Consumer1 get Message:4
Consumer2 get Message:5
Consumer1 get Message:6
Consumer2 get Message:7
Consumer1 get Message:8
Consumer2 get Message:9

 
可以看出每个消息直被消费了一次,但是如果有多个消费者同时监听一个 Queue 的话,无法确定一个消息最终会被哪一个消费者消费。

 

Example 3 实战 Topic

mport javax.jms.Connection;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;

import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.command.ActiveMQTopic;


public class TopicTest {

    public static void main(String[] args) throws Exception {
        ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("vm://localhost");
   
        Connection connection = factory.createConnection();
        connection.start();
       
        //
创建一个
Topic
        Topic topic= new ActiveMQTopic("testTopic");
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
        
        //
注册消费者
1
        MessageConsumer comsumer1 = session.createConsumer(topic);
        comsumer1.setMessageListener(new MessageListener(){
            public void onMessage(Message m) {
                try {
                    System.out.println("Consumer1 get " + ((TextMessage)m).getText());
                } catch (JMSException e) {
                    e.printStackTrace();
                }
            }
        });
       
        //
注册消费者
2
        MessageConsumer comsumer2 = session.createConsumer(topic);
        comsumer2.setMessageListener(new MessageListener(){
            public void onMessage(Message m) {
                try {
                    System.out.println("Consumer2 get " + ((TextMessage)m).getText());
                } catch (JMSException e) {
                    e.printStackTrace();
                }
            }
           
        });
       
        //
创建一个生产者,然后发送多个消息。
        MessageProducer producer = session.createProducer(topic);
        for(int i=0; i<10; i++){
            producer.send(session.createTextMessage("Message:" + i));
        }
    }

}

运行后得到下面的输出结果:

Consumer1 get Message:0
Consumer2 get Message:0
Consumer1 get Message:1
Consumer2 get Message:1
Consumer1 get Message:2
Consumer2 get Message:2
Consumer1 get Message:3
Consumer2 get Message:3
Consumer1 get Message:4
Consumer2 get Message:4
Consumer1 get Message:5
Consumer2 get Message:5
Consumer1 get Message:6
Consumer2 get Message:6
Consumer1 get Message:7
Consumer2 get Message:7
Consumer1 get Message:8
Consumer2 get Message:8
Consumer1 get Message:9
Consumer2 get Message:9

说明每一个消息都会被所有的消费者消费。

 

消息头

     一个消息对象分为三部分:消息头 (Headers) ,属性( Properties )和消息体( Payload )。对于 StreamMessage MapMessage ,消息本身就有特定的结构,而对于 TextMessage ObjectMessage BytesMessage 是无结构的。 一个 消息可以包含一些重要的数据或者仅仅是一个事件的通知。

    消息的 Headers 部分通常包含一些消息的描述信息,它们都是标准的描述信息。包含下面一些值:

   JMSDestination
      
消息的目的地, Topic 或者是 Queue

   JMSDeliveryMode
       
消息的发送模式: persistent nonpersistent 前者表示消息在被消费之前,如果 JMS 提供者 DOWN 了,重新启动后消息仍然存在。后者在这种情况下表示消息会被丢失。可以通过下面的方式设置:
       Producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);

       JMSTimestamp
      
当调用 send() 方法的时候, JMSTimestamp 会被自动设置为当前事件。可以通过下面方式得到这个值:

       long timestamp = message.getJMSTimestamp();

   JMSExpiration
      
表示一个消息的有效期。只有在这个有效期内,消息消费者才可以消费这个消息。默认值为 0 ,表示消息永不过期。可以通过下面的方式设置:
       producer.setTimeToLive(3600000); //
有效期 1 小时 1000 毫秒 * 60 * 60 分)

   JMSPriority
      
消息的优先级。 0-4 为正常的优先级, 5-9 为高优先级。可以通过下面方式设置:
       producer.setPriority(9);

   JMSMessageID
      
一个字符串用来唯一标示一个消息。

   JMSReplyTo
      
有时消息生产者希望消费者回复一个消息, JMSReplyTo 为一个 Destination ,表示需要回复的目的地。当然消费者可以不理会它。

   JMSCorrelationID
      
通常用来关联多个 Message 。例如需要回复一个消息,可以把 JMSCorrelationID 设置为所收到的消息的 JMSMessageID

   JMSType
      
表示消息体的结构,和 JMS 提供者有关。

   JMSRedelivered
      
如果这个值为 true ,表示消息是被重新发送了。因为有时消费者没有确认他已经收到消息或者 JMS 提供者不确定消费者是否已经收到。

   
除了 Header ,消息发送者可以添加一些属性 (Properties) 。这些属性可以是应用自定义的属性, JMS 定义的属性和 JMS 提供者定义的属性。我们通常只适用自定义的属性。

   
后面会讲到这些 Header 和属性的用法。

 

 

Example 4 DeliveryMode 例子

在下面的例子中,分别发送一个 Persistent nonpersistent 的消息,然后关闭退出 JMS

 

import javax.jms.Connection;
import javax.jms.DeliveryMode;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.command.ActiveMQQueue;

public class DeliveryModeSendTest {

    public static void main(String[] args) throws Exception {
        ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("vm://localhost");
   
        Connection connection = factory.createConnection();
        connection.start();
       
        Queue queue = new ActiveMQQueue("testQueue");
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
               
        MessageProducer producer = session.createProducer(queue);
        producer.setDeliveryMode(DeliveryMode.PERSISTENT);
        producer.send(session.createTextMessage("A persistent Message"));
       
        producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
        producer.send(session.createTextMessage("A non persistent Message"));
       
        System.out.println("Send messages sucessfully!");
    }
}

   
运行上面的程序,当输出“ Send messages sucessfully!” 时,说明两个消息都已经发送成功,然后我们结束它,来停止 JMS Provider

    接下来我们重新启动 JMS Provicer ,然后添加一个消费者:

import javax.jms.Connection;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.command.ActiveMQQueue;

public class DeliveryModeReceiveTest {

    public static void main(String[] args) throws Exception {
        ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("vm://localhost");
   
        Connection connection = factory.createConnection();
        connection.start();
       
        Queue queue = new ActiveMQQueue("testQueue");
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
       
        MessageConsumer comsumer = session.createConsumer(queue);
        comsumer.setMessageListener(new MessageListener(){
            public void onMessage(Message m) {
                try {
                    System.out.println("Consumer get " + ((TextMessage)m).getText());
                } catch (JMSException e) {
                    e.printStackTrace();
                }
            }
        });
    }
}

运行上面的程序,可以得到下面的输出结果:

Consumer get A persistent Message

可以看出消息消费者只接收到一个消息,它是一个 Persistent 的消息。而刚才发送的 non persistent 消息已经丢失了。

另外 , 如果发送一个 non persistent 消息 , 而刚好这个时候没有消费者在监听 , 这个消息也会丢失 .

 

Example 5 JMSReplyTo

 

在下面的例子中,首先创建两个 Queue ,发送者给一个 Queue 发送,接收者接收到消息之后给另一个 Queue 回复一个 Message ,然后再创建一个消费者来接受所回复的消息。

import javax.jms.Connection;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.command.ActiveMQQueue;

public class MessageSendReceiveAndReply {

    public static void main(String[] args) throws Exception {
        ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("vm://localhost");
   
        Connection connection = factory.createConnection();
        connection.start();
       
        //
消息发送到这个
Queue
        Queue queue = new ActiveMQQueue("testQueue");

        //
消息回复到这个
Queue
        Queue replyQueue = new ActiveMQQueue("replyQueue");
       
        final Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

        //
创建一个消息,并设置它的 JMSReplyTo replyQueue
        Message message = session.createTextMessage("Andy");
        message.setJMSReplyTo(replyQueue);
       
        MessageProducer producer = session.createProducer(queue);
        producer.send(message);
           
        //
消息的接收者
        MessageConsumer comsumer = session.createConsumer(queue);
        comsumer.setMessageListener(new MessageListener(){
            public void onMessage(Message m) {
                try {
                    //
创建一个新的 MessageProducer 来发送一个回复消息。
                    MessageProducer producer = session.createProducer(m.getJMSReplyTo());
                    producer.send(session.createTextMessage("Hello " + ((TextMessage) m).getText()));
                } catch (JMSException e1) {
                    e1.printStackTrace();
                }
            }
           
        });
       
        //
这个接收者用来接收回复的消息
        MessageConsumer comsumer2 = session.createConsumer(replyQueue);
        comsumer2.setMessageListener(new MessageListener(){
            public void onMessage(Message m) {
                try {
                    System.out.println(((TextMessage) m).getText());
                } catch (JMSException e) {
                    e.printStackTrace();
                }
            }
        });
    }

}

   
首先消息生产者发送一个消息,内容为“ Andy” 然后消费者收到这个消息之后根据消息的 JMSReplyTo ,回复一个消息,内容为“ Hello Andy‘ 最后在回复的 Queue 上创建一个接收回复消息的消费者,它输出所回复的内容。


   
运行上面的程序,可以得到下面的输出结果:

Hello Andy

 

深入掌握JMS(九)

前面的例子中创建一个消息消费者使用的是:
          sesssion
.createConsumer(destination)
  另外,还提供了另一种方式:
    
sesssion .createConsumer(destination, selector)
 这里selector是一个字符串,用来过滤消息。也就是说,这种方式可以创建一个可以只接收特定消息的一个消费者。
Selector的格式是类似于SQL-92的一种语法。可以用来比较消息头信息和属性。

 

package test.jms;

import javax.jms.Connection;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.command.ActiveMQQueue;

public class JMSSelectorTest {

 public static void main(String[] args) throws Exception {
  ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("vm://localhost");

  Connection connection = factory.createConnection();
  connection.start();

  Queue queue = new ActiveMQQueue("testQueue");

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

  MessageConsumer comsumerA = session.createConsumer(queue, "receiver = 'A'");
  comsumerA.setMessageListener(new MessageListener() {
   public void onMessage(Message m) {
    try {
     System.out.println("ConsumerA get " + ((TextMessage) m).getText());
    } catch (JMSException e1) {
    }
   }
  });

  MessageConsumer comsumerB = session.createConsumer(queue,  "receiver = 'B'");
  comsumerB.setMessageListener(new MessageListener() {
   public void onMessage(Message m) {
    try {
     System.out.println("ConsumerB get " + ((TextMessage) m).getText());
    } catch (JMSException e) {
    }
   }
  });

  MessageProducer producer = session.createProducer(queue);
  for (int i = 0; i < 10; i++) {
   String receiver = (i % 3 == 0 ? "A" : "B");
   TextMessage message = session.createTextMessage("Message" + i + ", receiver:" + receiver);
   message.setStringProperty("receiver", receiver);
   producer.send(message);
  }
 }
}

 

输出结果为:

ConsumerA get Message0, receiver:A

ConsumerB get Message1, receiver:B

ConsumerB get Message2, receiver:B

ConsumerA get Message3, receiver:A

ConsumerB get Message4, receiver:B

ConsumerB get Message5, receiver:B

ConsumerA get Message6, receiver:A

ConsumerB get Message7, receiver:B

ConsumerB get Message8, receiver:B

ConsumerA get Message9, receiver:A

 

 

分享到:
评论

相关推荐

    深入掌握JMS——ActiveMQ 十一章

    ### 深入掌握JMS——ActiveMQ 十一章 #### JMS基本概念与重要知识点解析 **JMS(Java Message Service)简介** JMS(Java消息服务)是一种广泛应用于企业级应用中的消息中间件协议,它为应用程序提供了一种高效、...

    由浅入深学习、掌握JMS

    接着,**《深入掌握JMS》** 进一步探讨了JMS的高级特性,如消息选择器、消息组、消息优先级以及事务管理。这部分内容有助于读者解决更复杂的消息处理需求,例如实现特定条件的消息过滤,或者确保消息的有序处理。 *...

    一头扎进JMS之ActiveMQ系列

    总之,无论你是初学者还是经验丰富的开发者,这个系列教程都将是你掌握ActiveMQ和JMS的宝贵资源。通过学习,你不仅可以提升自己的技术能力,还能为你的项目选择和实施消息队列解决方案提供有力的支持。所以,如果你...

    jms-1_0_2-upd-sampleprograms.zip

    《Java消息服务(JMS)1.0.2更新示例程序详解》 Java消息服务(Java Message Service,简称JMS)是Java平台中...无论你是初学者还是经验丰富的开发者,这些示例都提供了宝贵的实践经验,帮助你深入掌握JMS的核心概念。

    JMS--J2EE培训材料

    ### JMS -- J2EE培训材料 #### 一、引言 JMS(Java Message Service)是Java平台中关于面向消息中间件(MOM)的...掌握JMS的核心概念和技术可以帮助开发者更好地构建复杂的企业级应用,提高系统的灵活性和可扩展性。

    JMS管理与开发手册.pdf

    #### 三、掌握JMS:核心概念与实践 - **JMS概述**:章节介绍了JMS的基本原理,包括点到点(P2P)和发布/订阅(Pub/Sub)两种消息模型,以及如何通过JMS与其他企业级Java API协同工作,如JNDI(Java命名和目录接口)...

    jms英文书小合集

    通过深入学习这些内容,开发者可以掌握使用JMS构建高效、可靠的企业级应用程序的技巧,从而提升系统的性能和稳定性。无论你是初学者还是经验丰富的开发者,这个英文书合集都能为你的JMS学习之旅提供宝贵的资料。

    activemq中间件视频 jms规范

    通过这个视频系列,你不仅能够掌握ActiveMQ的基本操作,还能深入理解JMS规范,从而在实际项目中更有效地利用消息中间件进行解耦和异步通信。此外,了解ActiveMQ的性能调优和故障排查技巧也是提升系统稳定性的关键,...

    JMS1.1规范(中文版)

    **JMS(Java Messaging Service)1.1规范**是中国开发者卫建军基于原版英文资料进行汉化的成果,旨在帮助更多中文使用者更好地理解和掌握这一企业级消息传输标准。JMS作为一种在应用程序之间传递消息的标准API,其...

    JMS Southbound 指南 jms_southbound_tutorial

    "tutorials"文件夹可能包含一系列逐步指导,从基础知识到高级概念,帮助开发者快速掌握JMS Southbound的使用。 总之,JMS Southbound指南是学习如何将应用程序连接到JMS提供者并有效地利用消息传递功能的重要资源。...

    JMS开发介绍1111111

    Java消息服务(Java Message Service,简称JMS)是Java平台中用于企业级应用间异步通信的标准接口。它允许应用程序创建、...《JMS简明教程》这本书应该会深入解释这些概念,并提供实践指导,帮助你更好地掌握JMS技术。

    深入掌握J2EE编程技术1.pdf )

    ### 深入掌握J2EE编程技术的关键知识点 #### J2EE概述 J2EE(Java 2 Platform, Enterprise Edition)是Sun Microsystems为简化企业级应用开发而设计的一套标准和技术规范。它基于Java SE,并增加了许多面向企业级...

    Spring整合JMS.doc

    Spring JMS模块包括了一系列用于处理JMS的抽象类,如`JmsTemplate`,它简化了JMS的使用,提供了消息发送和接收的模板方法。此外,Spring还提供了对JMS资源的声明式事务管理,以及对连接工厂(ConnectionFactory)、...

    spring+jms+activemq

    本文将深入探讨如何使用Spring框架与ActiveMQ结合实现基于JMS的消息传递系统。 首先,理解JMS的基本概念至关重要。JMS定义了生产者(Producer)、消费者(Consumer)和消息队列(Queue)或主题(Topic)等核心组件...

    jms&antlr3.0 jar

    这里我们将深入探讨这两个概念以及它们在实际应用中的作用。 首先,`JMS`是Java平台上的一个标准API,它允许应用程序创建、发送、接收和读取消息。消息传递是一种异步通信方式,通过解耦发送方和接收方,提高了系统...

    深入掌握J2EE编程技术2.pdf )

    ### 深入掌握J2EE编程技术的关键知识点 #### J2EE概述 J2EE(Java 2 Platform, Enterprise Edition)是Sun Microsystems为简化企业级应用开发而设计的一套标准和技术规范。它基于Java SE,并增加了许多面向企业级...

    SUN JMS MQ 全书

    ### SUN JMS MQ 全书知识点总结 #### 1. 关于SUN Java System Message Queue (JMS MQ) ...这对于那些需要深入了解和掌握SUN Java System Message Queue 3.7 UR1版本的IT专业人士来说是非常宝贵的资源。

    使用JMS和ESB构建强大而可靠的SOA

    总之,本文系列将深入探讨如何使用IBM WebSphere ESB和JMS构建强大且可靠的SOA环境。通过学习和实践,读者将掌握如何部署和运行基于ESB的解决方案,以及如何利用JMS进行高效的消息传递,从而提升整个系统的性能和...

    was6培训资料:L08-WASv6_Service Integration and JMS.pdf

    ### WAS6培训资料:L08-WASv6_Service ...通过本实验的学习,参与者不仅能深入了解WAS v6在服务集成和JMS方面的能力,还能掌握如何配置和运行相关的资源和服务。这对于构建高性能、高可用性的分布式应用至关重要。

    activemq系列笔记

    JMS规范教程则更深入地介绍了JMS规范的细节,可能涵盖规范中的核心概念、API接口、异常处理、事务管理、消息选择器等功能,帮助开发者深入理解JMS的工作原理和最佳实践。 总的来说,这些资源对于理解和掌握...

Global site tag (gtag.js) - Google Analytics