activemq获取消息方法

本文介绍了一个基于 Spring 的 Java 消息服务 (JMS) 示例,演示了如何从队列接收消息并解析其头部信息及内容。通过 ClassPathXmlApplicationContext 初始化配置,并利用 JmsTemplate 接收消息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1.  ApplicationContext applicationContext = new ClassPathXmlApplicationContext(  
  2.                 new String[] { "classpath:/conf/applicationContext_jms.xml" });  
  3.           
  4.         JmsTemplate template = (JmsTemplate) applicationContext  
  5.                 .getBean("jmsTemplate");  
  6.           
  7.         //队列消息   
  8.         Destination destinationQueue = (Destination) applicationContext  
  9.                 .getBean("destinationQueue");  
  10.           
  11.         //主题消息     
  12.         Destination destinationTopic = (Destination) applicationContext  
  13.                     .getBean("destinationTopic");  
  14.         
  15.           System.out.println("will wait:" + template.getReceiveTimeout()+ " seconds for message");  
  16.           
  17.           TextMessage textMsg = (TextMessage) template.receive(destinationQueue);          
  18.         try{   
  19.             // 消息 header 中常有的 属性定义       
  20.                 System.out.println("消息编码:" + textMsg.getJMSMessageID());   
  21.                 System.out.println("目标对象:" + textMsg.getJMSDestination());   
  22.                 System.out.println("消息模式:" + textMsg.getJMSDeliveryMode()); // 消息的模式 分为持久模式和非持久模式, 默认是 非持久的模式(2)    
  23.                      
  24.                 long sendTime = textMsg.getJMSTimestamp();   
  25.                 Date date = new Date(sendTime);   
  26.                 DateFormat f = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");   
  27.                 String temp = f.format(date);   
  28.                      
  29.                 System.out.println("消息发送时间:" + temp);      
  30.                 System.out.println("消息失效时间:" + textMsg.getJMSExpiration()); // 这里是一个 整型值 0 表示 该消息永远不会过期    
  31.                 System.out.println("消息优先级:" + textMsg.getJMSPriority()); // 优先级 0~9, 0 表示最低    
  32.                 System.out.println("关联编码:" + textMsg.getJMSCorrelationID());      
  33.                      
  34.                 System.out.println("回复消息的地址:" + textMsg.getJMSReplyTo());    // 回复消息的地址(Destination类型),由发送者设定    
  35.                 System.out.println("消息类型:" + textMsg.getJMSType()); // jms 不使用该字段, 一般类型是由 用户自己定义    
  36.                 System.out.println("是否签收过:" + textMsg.getJMSRedelivered()); // 如果是 真 ,表示客户端收到过该消息,但是并没有签收    
  37.                      
  38.                 // 消息属性 (properties)       
  39.                 System.out.println("用户编码:" + textMsg.getStringProperty("JMSXUserID"));   
  40.                 System.out.println("应用程序编码:" + textMsg.getStringProperty("JMSXApp1ID"));   
  41.                 System.out.println("已经尝试发送消息的次数:" + textMsg.getStringProperty("JMSXDeliveryCount"));                 
  42.                      
  43.                 // 消息体(body) 中传递的内容       
  44.                 System.out.println("消息内容:" + textMsg.getText());   
  45.                  
  46.                  
  47.            }catch(JMSException e){   
  48.             e.printStackTrace();   
  49.            }catch(Exception e){   
  50.             e.printStackTrace();   
  51.            }   
  52.   
  53. //           
  54.           //取队列消息失败   
  55. //        TextMessage msgTopic = (TextMessage) template.receive(destinationTopic);          
  56. //        System.out.println("reviced msg is:" + msgTopic.getText());   
  57.            
  58.              
  59.   
  60.             
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值