`

JMS五种消息的发送/接收的例子

jms 
阅读更多
转: 

JMS五种消息的发送/接收的例子

分类:

1、消息发送

Java代码 复制代码 收藏代码
  1. //连接工厂   
  2. ConnectionFactory connFactory = new ActiveMQConnectionFactory(   
  3.         ActiveMQConnection.DEFAULT_USER,   
  4.         ActiveMQConnection.DEFAULT_PASSWORD,   
  5.         "tcp://localhost:61616");   
  6.   
  7. //连接到JMS提供者   
  8. Connection conn = connFactory.createConnection();   
  9. conn.start();   
  10.   
  11. //事务性会话,自动确认消息   
  12. Session session = conn.createSession(true, Session.AUTO_ACKNOWLEDGE);   
  13.   
  14. //消息的目的地   
  15. Destination destination = session.createQueue("queue.hello");   
  16.   
  17. //消息生产者   
  18. MessageProducer producer = session.createProducer(destination);   
  19. producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); //不持久化   
  20.   
  21.   
  22. //文本消息   
  23. TextMessage textMessage = session.createTextMessage("文本消息");   
  24. producer.send(textMessage);   
  25.   
  26. //键值对消息   
  27. MapMessage mapMessage = session.createMapMessage();   
  28. mapMessage.setLong("age"new Long(32));   
  29. mapMessage.setDouble("sarray"new Double(5867.15));   
  30. mapMessage.setString("username""键值对消息");   
  31. producer.send(mapMessage);   
  32.   
  33. //流消息   
  34. StreamMessage streamMessage = session.createStreamMessage();   
  35. streamMessage.writeString("streamMessage流消息");   
  36. streamMessage.writeLong(55);   
  37. producer.send(streamMessage);   
  38.   
  39. //字节消息   
  40. String s = "BytesMessage字节消息";   
  41. BytesMessage bytesMessage = session.createBytesMessage();   
  42. bytesMessage.writeBytes(s.getBytes());   
  43. producer.send(bytesMessage);   
  44.   
  45. //对象消息   
  46. User user = new User("cjm""对象消息"); //User对象必须实现Serializable接口   
  47. ObjectMessage objectMessage = session.createObjectMessage();   
  48. objectMessage.setObject(user);   
  49. producer.send(objectMessage);   
  50.   
  51.   
  52. session.commit(); //在事务性会话中,只有commit之后,消息才会真正到达目的地   
  53. producer.close();   
  54. session.close();   
  55. conn.close();  
[java] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. //连接工厂  
  2. ConnectionFactory connFactory = new ActiveMQConnectionFactory(  
  3.         ActiveMQConnection.DEFAULT_USER,  
  4.         ActiveMQConnection.DEFAULT_PASSWORD,  
  5.         "tcp://localhost:61616");  
  6.   
  7. //连接到JMS提供者  
  8. Connection conn = connFactory.createConnection();  
  9. conn.start();  
  10.   
  11. //事务性会话,自动确认消息  
  12. Session session = conn.createSession(true, Session.AUTO_ACKNOWLEDGE);  
  13.   
  14. //消息的目的地  
  15. Destination destination = session.createQueue("queue.hello");  
  16.   
  17. //消息生产者  
  18. MessageProducer producer = session.createProducer(destination);  
  19. producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); //不持久化  
  20.   
  21.   
  22. //文本消息  
  23. TextMessage textMessage = session.createTextMessage("文本消息");  
  24. producer.send(textMessage);  
  25.   
  26. //键值对消息  
  27. MapMessage mapMessage = session.createMapMessage();  
  28. mapMessage.setLong("age"new Long(32));  
  29. mapMessage.setDouble("sarray"new Double(5867.15));  
  30. mapMessage.setString("username""键值对消息");  
  31. producer.send(mapMessage);  
  32.   
  33. //流消息  
  34. StreamMessage streamMessage = session.createStreamMessage();  
  35. streamMessage.writeString("streamMessage流消息");  
  36. streamMessage.writeLong(55);  
  37. producer.send(streamMessage);  
  38.   
  39. //字节消息  
  40. String s = "BytesMessage字节消息";  
  41. BytesMessage bytesMessage = session.createBytesMessage();  
  42. bytesMessage.writeBytes(s.getBytes());  
  43. producer.send(bytesMessage);  
  44.   
  45. //对象消息  
  46. User user = new User("cjm""对象消息"); //User对象必须实现Serializable接口  
  47. ObjectMessage objectMessage = session.createObjectMessage();  
  48. objectMessage.setObject(user);  
  49. producer.send(objectMessage);  
  50.   
  51.   
  52. session.commit(); //在事务性会话中,只有commit之后,消息才会真正到达目的地  
  53. producer.close();  
  54. session.close();  
  55. conn.close();  

 

2、消息接收:通过消息监听器的方式接收消息

Java代码 复制代码 收藏代码
  1. public class Receiver implements MessageListener{   
  2.     private boolean stop = false;   
  3.        
  4.     public void execute() throws Exception {   
  5.         //连接工厂   
  6.         ConnectionFactory connFactory = new ActiveMQConnectionFactory(   
  7.                 ActiveMQConnection.DEFAULT_USER,   
  8.                 ActiveMQConnection.DEFAULT_PASSWORD,   
  9.                 "tcp://localhost:61616");   
  10.            
  11.         //连接到JMS提供者   
  12.         Connection conn = connFactory.createConnection();   
  13.         conn.start();   
  14.            
  15.         //事务性会话,自动确认消息   
  16.         Session session = conn.createSession(true, Session.AUTO_ACKNOWLEDGE);   
  17.            
  18.         //消息的来源地   
  19.         Destination destination = session.createQueue("queue.hello");   
  20.            
  21.         //消息消费者   
  22.         MessageConsumer consumer = session.createConsumer(destination);   
  23.         consumer.setMessageListener(this);   
  24.            
  25.         //等待接收消息   
  26.         while(!stop){   
  27.             Thread.sleep(5000);   
  28.         }   
  29.            
  30.         session.commit();   
  31.            
  32.         consumer.close();   
  33.         session.close();   
  34.         conn.close();   
  35.     }   
  36.   
  37.     public void onMessage(Message m) {   
  38.         try{   
  39.             if(m instanceof TextMessage){ //接收文本消息   
  40.                 TextMessage message = (TextMessage)m;   
  41.                 System.out.println(message.getText());   
  42.             }else if(m instanceof MapMessage){ //接收键值对消息   
  43.                 MapMessage message = (MapMessage)m;   
  44.                 System.out.println(message.getLong("age"));   
  45.                 System.out.println(message.getDouble("sarray"));   
  46.                 System.out.println(message.getString("username"));   
  47.             }else if(m instanceof StreamMessage){ //接收流消息   
  48.                 StreamMessage message = (StreamMessage)m;   
  49.                 System.out.println(message.readString());   
  50.                 System.out.println(message.readLong());   
  51.             }else if(m instanceof BytesMessage){ //接收字节消息   
  52.                 byte[] b = new byte[1024];   
  53.                 int len = -1;   
  54.                 BytesMessage message = (BytesMessage)m;   
  55.                 while((len=message.readBytes(b))!=-1){   
  56.                     System.out.println(new String(b, 0, len));   
  57.                 }   
  58.             }else if(m instanceof ObjectMessage){ //接收对象消息   
  59.                 ObjectMessage message = (ObjectMessage)m;   
  60.                 User user = (User)message.getObject();   
  61.                 System.out.println(user.getUsername() + " _ " + user.getPassword());   
  62.             }else{   
  63.                 System.out.println(m);   
  64.             }   
  65.                
  66.             stop = true;   
  67.         }catch(JMSException e){   
  68.             stop = true;   
  69.             e.printStackTrace();   
  70.         }   
  71.     }   
  72. }  
[java] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. public class Receiver implements MessageListener{  
  2.     private boolean stop = false;  
  3.       
  4.     public void execute() throws Exception {  
  5.         //连接工厂  
  6.         ConnectionFactory connFactory = new ActiveMQConnectionFactory(  
  7.                 ActiveMQConnection.DEFAULT_USER,  
  8.                 ActiveMQConnection.DEFAULT_PASSWORD,  
  9.                 "tcp://localhost:61616");  
  10.           
  11.         //连接到JMS提供者  
  12.         Connection conn = connFactory.createConnection();  
  13.         conn.start();  
  14.           
  15.         //事务性会话,自动确认消息  
  16.         Session session = conn.createSession(true, Session.AUTO_ACKNOWLEDGE);  
  17.           
  18.         //消息的来源地  
  19.         Destination destination = session.createQueue("queue.hello");  
  20.           
  21.         //消息消费者  
  22.         MessageConsumer consumer = session.createConsumer(destination);  
  23.         consumer.setMessageListener(this);  
  24.           
  25.         //等待接收消息  
  26.         while(!stop){  
  27.             Thread.sleep(5000);  
  28.         }  
  29.           
  30.         session.commit();  
  31.           
  32.         consumer.close();  
  33.         session.close();  
  34.         conn.close();  
  35.     }  
  36.   
  37.     public void onMessage(Message m) {  
  38.         try{  
  39.             if(m instanceof TextMessage){ //接收文本消息  
  40.                 TextMessage message = (TextMessage)m;  
  41.                 System.out.println(message.getText());  
  42.             }else if(m instanceof MapMessage){ //接收键值对消息  
  43.                 MapMessage message = (MapMessage)m;  
  44.                 System.out.println(message.getLong("age"));  
  45.                 System.out.println(message.getDouble("sarray"));  
  46.                 System.out.println(message.getString("username"));  
  47.             }else if(m instanceof StreamMessage){ //接收流消息  
  48.                 StreamMessage message = (StreamMessage)m;  
  49.                 System.out.println(message.readString());  
  50.                 System.out.println(message.readLong());  
  51.             }else if(m instanceof BytesMessage){ //接收字节消息  
  52.                 byte[] b = new byte[1024];  
  53.                 int len = -1;  
  54.                 BytesMessage message = (BytesMessage)m;  
  55.                 while((len=message.readBytes(b))!=-1){  
  56.                     System.out.println(new String(b, 0, len));  
  57.                 }  
  58.             }else if(m instanceof ObjectMessage){ //接收对象消息  
  59.                 ObjectMessage message = (ObjectMessage)m;  
  60.                 User user = (User)message.getObject();  
  61.                 System.out.println(user.getUsername() + " _ " + user.getPassword());  
  62.             }else{  
  63.                 System.out.println(m);  
  64.             }  
  65.               
  66.             stop = true;  
  67.         }catch(JMSException e){  
  68.             stop = true;  
  69.             e.printStackTrace();  
  70.         }  
  71.     }  
分享到:
评论

相关推荐

    Spring发送接收JMS消息

    在Java世界中,Java Message Service (JMS) 是一个标准接口,用于在分布式环境中发送和接收消息。Spring框架提供了一种简单而强大的方式来集成JMS,使得开发者可以轻松地在应用中实现异步通信和解耦。本篇文章将深入...

    spring-jms使用queue发送消息简单例子

    在这个"spring-jms使用queue发送消息简单例子"中,我们将深入探讨如何使用Spring JMS与ActiveMQ结合,通过队列(Queue)来发送和接收消息。 首先,`pom.xml`文件是Maven项目的配置文件,它包含了项目所依赖的库。...

    spring mq集成 web工程发送和接收消息例子

    在我们的例子中,我们将使用Spring与ActiveMQ的集成,以便在Web应用中发送和接收消息。 集成步骤如下: 1. **配置ActiveMQ服务器**:首先,你需要在本地或远程服务器上安装并运行ActiveMQ。下载并解压ActiveMQ,...

    SpringBoot+ActiveMq+MQTT实现消息的发送和接收

    JMSTemplate提供了一种简单的方式来发送JMS消息,而MQTT客户端API则用于发送MQTT消息。 4. 定义消息消费者:创建一个监听特定主题的MessageListener。当有消息到达时,这个监听器会被触发并处理消息。 5. 编写消息...

    java-jms小例子

    Java消息服务(Java Message Service,...通过创建消息生产者和消费者,设置消息队列或主题,以及发送和接收不同类型的JMS消息,开发者能够掌握JMS的核心功能,并将其应用于实际项目中,提升系统的可扩展性和容错性。

    jms+sping+activeMq的例子serd和recevice

    JMS是一种标准的API,允许Java应用程序创建、发送、接收和读取消息。它提供了异步通信的能力,使得应用程序可以解耦消息生产者和消费者,提高系统的可扩展性和可靠性。JMS支持两种消息模型:点对点(Point-to-Point,...

    spring+jms+jta事务的消息发送和消息消费

    首先,Spring框架通过其`JmsTemplate`类简化了JMS的使用,提供了一种模板方法来发送和接收消息。开发者可以配置JMS连接工厂,指定目的地(队列或主题),并使用`convertAndSend`或`receive`等方法进行操作。 其次,...

    Jms的例子 不错的例子

    这些代码会演示如何正确地初始化JMS环境,创建连接和会话,定义消息属性,发送和接收消息。通过分析和运行这些代码,我们可以更好地理解JMS的工作流程,包括同步和异步消息处理、事务支持、持久化消息以及消息选择器...

    activemq 通过ajax发送接收消息简单例子

    ActiveMQ是Apache软件基金会开发的一款开源消息中间件,它遵循开放消息传递标准(JMS,Java Message Service),用于在分布式系统中实现可靠的消息传递。在本示例中,我们将探讨如何利用Ajax技术与ActiveMQ进行交互...

    JMS完全实例(八个实例)

    JMS的基本操作是发送和接收消息。在这些实例中,我们将看到如何使用生产者(Producer)创建消息并发送到队列(Queue)或主题(Topic)。消费者(Consumer)则从这些队列或主题中接收消息。理解如何创建消息对象,...

    J2EE中的JMS 消息服务

    7. **事务(Transactions)**:JMS允许在发送和接收消息时使用JTA(Java Transaction API),确保消息操作的原子性。 在J2EE环境中,JMS通常与EJB(Enterprise JavaBeans)结合使用,尤其是Message-Driven Bean...

    JMS开发例子.rar

    这个"JMS开发例子.pdf"文件可能包含了如何配置JMS,创建生产者和消费者,发送和接收不同类型的JMS消息,以及如何处理异常和事务等内容。通过阅读和实践这个例子,开发者能够更好地理解JMS的工作原理,并在实际项目中...

    JMS开发例子.pdf

    Java消息服务(JMS)是一种标准的Java API,用于在应用程序之间发送消息。它提供了一种异步通信机制,允许程序通过消息中间件发送和接收消息。JMS支持两种消息模型:点对点(Point-to-Point, PTP)和发布/订阅(Publish/...

    JMS简单示例1

    Java消息服务(Java Message Service,简称JMS)是Java平台中用于企业级应用集成的标准化API,它允许应用程序创建、发送、接收和读取消息。JMS提供了一种在分布式环境中可靠地传递信息的方式,使得不同的应用程序...

    jms之activeMQ 队列和广播模式例子(主要给初学者提供入门知识)

    在IT行业中,Java消息服务(Java Message Service,简称JMS)是一种标准,它定义了应用程序如何创建、发送、接收和读取消息的标准API。ActiveMQ是Apache软件基金会开发的一个开源JMS提供者,它允许开发者在分布式...

    jms+activeMq+spring学习简单例子

    1. **JMS基础**:JMS允许应用程序创建、发送、接收和阅读消息。它定义了两种消息模型:点对点(Queue)和发布/订阅(Topic)。在点对点模型中,每个消息只被一个消费者接收;而在发布/订阅模型中,消息可以被多个...

    JMS.rar_activemq_jms_jms activemq

    ActiveMQ支持JMS API,允许开发者通过创建连接工厂、会话、生产者和消费者对象来发送和接收消息。在实际应用中,通常会使用`ConnectionFactory`来创建连接,然后创建`Session`对象,该对象用于管理事务和创建消息...

Global site tag (gtag.js) - Google Analytics