`
gtgt1988
  • 浏览: 114250 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

JMS的应用

 
阅读更多

最近需要使用JMS接收消息,需要在客户端使用一个监听器实时接收消息,监听器代码如下:

public class JmsReceiverListener extends Thread implements	MessageListener, ExceptionListener {
	private final static Logger logger = LoggerFactory.getLogger(JmsReceiverListener.class); 
	// ConnectionFactory :连接工厂,JMS 用它创建连接
		ConnectionFactory connectionFactory;
		// Connection :JMS 客户端到JMS Provider 的连接
		Connection connection = null;
		// Session: 一个发送或接收消息的线程
		Session session;
		// Destination :消息的目的地
		Destination destination;
		//消息接收者
		MessageConsumer consumer;
		String url;

		public JmsReceiverListener(String queuename) {
			ClassPathResource resource = new ClassPathResource("META-INF/res/profile.properties");
			Properties properties;
			try {
				properties = PropertiesLoaderUtils.loadProperties(resource);
				url = properties.getProperty("activemq.url");
				logger.info("activeMq地址:"+url);
			} catch (IOException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
				logger.info("资源文件不存在");
			}
			
		
			String queue=queuename;
			connectionFactory = new ActiveMQConnectionFactory(
					ActiveMQConnection.DEFAULT_USER,
					ActiveMQConnection.DEFAULT_PASSWORD, url);
			// 构造从工厂得到连接对象
			try {
				connection = connectionFactory.createConnection();
				connection.setExceptionListener(this);// 异常处理
				connection.start();// 连接启动
				//如果为true,则队列里面的消息没有被取走,继续存在
				session = connection.createSession(false,
						Session.AUTO_ACKNOWLEDGE);
				// 获取session, 
				destination = session.createQueue(queue);
				consumer = session.createConsumer(destination);
			} catch (JMSException e) {
				System.err.println("Create fail!");
				e.printStackTrace();
			}
		}

		public void run() {
			try {
				consumer.setMessageListener(this);
			} catch (JMSException e) {
				System.err
						.println(" MessageListener failed...");
				e.printStackTrace();
			}
		}

		public void onMessage(Message message) {
		
			try {
				if (message instanceof MapMessage) {
					MapMessage mapMsg = (MapMessage)message;
					if(!CommonUtil.isNull(mapMsg.getString(AlarmTransferConstant.SUBSCRIBE))){
						String  messages=mapMsg.getString(AlarmTransferConstant.SUBSCRIBE);
						logger.info("告警订阅消息: " + messages);
						new AlarmSub().sendMsg(messages);
					}
					if(!CommonUtil.isNull(mapMsg.getString(AlarmTransferConstant.SYNCHRONIZE))){
						String  messages=mapMsg.getString(AlarmTransferConstant.SYNCHRONIZE);
						logger.info("告警同步消息: " + messages);
						new AlarmSyc().sendMsg(messages);
					}
					if(!CommonUtil.isNull(mapMsg.getString(AlarmTransferConstant.QUERY))){
						String  messages=mapMsg.getString(AlarmTransferConstant.QUERY);
						new AlarmQuery().sendMsg(messages);
						logger.info("告警查询消息: " + messages);
					}
//					TextMessage txtMsg = (TextMessage) message;
//					String msg = txtMsg.getText();
//					System.out.println("Received: " + msg);
//					new AlarmSub().sendMsg(msg);
					
				}
			} catch (JMSException e) {
				System.err.println("The process of getting a message failed...");
				e.printStackTrace();
			}
		}
		// 异步消息异常处理
		public void onException(JMSException arg0) {
			System.err.println("JMS异常!");
		}
		//测试程序
		public static void main(String[] args) {
			JmsReceiverListener jrl = new JmsReceiverListener("HelloWorldQueue");
			jrl.start();
		}

}

 

分享到:
评论

相关推荐

    JBOSS建立JMS应用实例

    【JBOSST建立JMS应用实例】 JBOSST(Java Business Open Source Solutions)是一个开源的企业级应用服务器,它提供了全面的中间件服务,包括对Java消息服务(JMS)的支持。JMS是一种标准,用于在分布式环境中传递...

    一个Topic和subscriber的JMS应用

    标题 "一个Topic和subscriber的JMS应用" 描述了一个基于Java消息服务(JMS)的系统,该系统涉及发布/订阅模式,其中Topic是发布者发送消息的地方,而subscriber是接收这些消息的实体。JMS是一种标准接口,允许应用...

    JBOSS建立JMS应用实例(附源码)

    **JBoss JMS应用构建详解** JBoss是一个开源的应用服务器,它支持Java消息服务(Java Message Service,简称JMS),这是一种标准的API,用于在分布式环境中进行异步通信。JMS允许应用程序创建、发送、接收和读取...

    一个简单的JMS客户端应用

    在JMS应用中,必须妥善处理各种可能的异常,例如`JMSException`,并考虑重新发送消息或回滚事务的情况。 总结,一个简单的JMS客户端应用涉及到连接管理、会话创建、消息生产和消费等多个环节,利用JMS提供的API...

    jms双系统应用

    5. **连接工厂与会话**:JMS应用需要创建连接工厂来建立与消息服务器的连接,然后通过连接工厂创建会话,处理消息的发送和接收。 6. **消息目的地**:定义消息的发送目标,可以是队列或主题。 7. **消息的持久化**...

    JMS demo 及 资料

    在"JMS入门级的蹩脚篇.ppt"这个文件中,可能包含了以下内容:JMS的基本概念解释,如何创建消息,如何设置消息队列和主题,如何编写生产者和消费者代码示例,以及如何配置和运行JMS应用程序。这些内容对于初学者理解...

    spring_jms

    在这个入门级实例中,我们将探讨如何使用Maven、Spring和ActiveMQ来构建一个简单的Spring JMS应用。 首先,Maven是一个项目管理和综合工具,它管理项目的构建、依赖关系和报告。在Spring JMS项目中,Maven用于管理...

    weblogic中使用JMS发送和接受消息

    ### 三、编写JMS应用程序 1. **导入JMS API**:在Java项目中,需要导入`javax.jms.*`包,以使用JMS API。 2. **创建连接和会话**:使用连接工厂创建JMS连接,然后从连接创建会话。会话是执行JMS操作的工作单元。 ...

    JMS规范教程pdf

    通过以上解析,我们可以看到JMS规范教程详细介绍了JMS的基本概念、消息模型以及通用设施,为开发者提供了构建和理解JMS应用程序所需的关键知识。JMS不仅提供了消息传递的基础结构,还涵盖了消息的管理和控制,使得...

    JMS规范PDF

    - **架构概述:** 该部分详细介绍了JMS的整体架构设计,包括JMS应用的基本构成和管理机制。 **2.2 什么是JMS应用** - **定义与组成:** JMS应用由定义消息的应用程序和一系列与其交互的客户端组成。 **2.3 管理** ...

    JMS规范培训教程

    **JMS应用实例** 1. **订单处理**:系统接收到订单后,通过JMS将订单消息放入队列,后台处理程序按顺序取出并处理,确保处理的顺序性和一致性。 2. **事件通知**:应用发布事件到主题,其他订阅该主题的应用会收到...

    JMS--J2EE培训材料

    2. **消息**:这是在JMS应用中各个客户端之间传递的信息载体。 3. **JMS提供者**:实现JMS协议的消息系统,如WebLogic Server提供的JMS服务。JMS提供者负责消息的存储、转发以及相关管理功能。 4. **管理对象**:...

    使用jms 操作ActiveMQ

    在IT行业中,Java消息服务(Java Message Service,简称JMS)是一种标准接口,用于应用程序之间的异步通信。它提供了一种可靠的消息传递机制,使得分布式系统中的组件可以解耦,提高系统的可扩展性和容错性。...

    maximo的JMS配置

    - **目的**:连接工厂是客户端用来创建连接和会话对象的,是 JMS 应用程序的重要组成部分。 ##### 6. 添加队列资源 - **步骤**: - 向 JMS 模块添加三个队列资源,其名称及 JNDI 名称分别为: - 队列 1:`sqin`,...

    JMS 中文 规范

    - **JMS应用的概念:** JMS应用由生产者(发送消息的应用程序)和消费者(接收消息的应用程序)组成,通过消息代理进行消息的传递。 - **管理:** 消息的管理包括配置消息代理、设置消息的优先级和过期时间等内容。...

    Weblogic上部署JMS

    WebLogic Server 是一款由 Oracle 公司提供的企业级 Java 应用服务器,它支持Java Message Service (JMS),这是一个标准接口,允许应用程序在分布式环境中发送和接收消息。JMS 提供了可靠的消息传递机制,是企业级...

    apps.jms.com.co-snv-desarrollo:开发中的 Jms 应用程序

    在“标签”中提到“Java”,意味着整个项目是用Java编程语言实现的,Java以其跨平台性和强大的库支持而闻名,特别适合开发企业级应用,包括JMS应用程序。 在压缩包的文件名称列表中,我们看到 "apps.jms....

    JMS规范1.1

    JMS应用是指那些使用JMS API进行消息传递的Java程序。JMS规范定义了一套消息模型,包括两种消息传递风格:点对点模型(Point-to-Point)和发布/订阅模型(Publish/Subscribe)。在点对点模型中,消息生产者和消息...

    JMS中间件ActiveMQ介绍

    JMS为开发者提供了一个与特定平台无关的API,使得开发人员能够更方便地开发、部署消息驱动的应用程序。 - **核心特性**: - **消息模型**:JMS 支持两种主要的消息模型 —— 点对点(Point-to-Point, PTP)和发布/...

Global site tag (gtag.js) - Google Analytics