ActiveMQ获取消息队列中的消息信息的方法

public void testMq(String subject) {
		RemoteJMXBrokerFacade broker = null;
		try {
			broker = getJMXBroker();
			QueueViewMBean qvm = broker.getQueue(subject);
			System.out.println(qvm.cursorSize()); 
			System.out.println(qvm.getQueueSize()); //队列的个数
			System.out.println(qvm.isCursorFull()); 
			System.out.println(qvm.getName()); //队列名称
//			CompositeData data = qvm.getMessage("ID:xen-web-60415-1339650484559-0:20091:1:1:1");
			CompositeData[] datas = qvm.browse();
			for (int i = 0; i < datas.length; i++) {
				CompositeData data = datas[i];
				String value = "";
				//mq中消息数据存储方式为key-value形式,
				//获取消息内容可根据key来取得,不同的消息类型有不同的key: Text Message key - Text; Map Message key - ContentMap
				if(data.containsKey("Text")) { 
					value = (String) data.get("Text");
				} else if(data.containsKey("ContentMap")) {
					value = (String) data.get("ContentMap");
				}
				System.out.println(value);
				System.out.println(data.containsValue("{task_id=15, user_id=0, site_name=www.baidu.com, priority=9}"));
			}
		} catch (Exception e) {
			if (log.isErrorEnabled()) {
				log.error("", e);
			}
		} finally {
			if (null != broker) {
				broker.shutdown();
			}
		}
	}

猜你喜欢

转载自koney0.iteye.com/blog/1565436
今日推荐