`

第三章 创建一个简单的JMS应用

 
阅读更多

                           创建一个简单的JMS应用

1.1使用jmsapi创建JMS 应用的步骤

    1.需要一个jms连接工厂

    2.使用工厂创建jms连接

    3.开启连接

    4.通过连接创建session

    5.取得一个destination

    6.创建一个生产者

    7.创建一个消费者

    8.发送或接受消息

    9.关闭所有资源.

   PS: ConnectionFactory,Connection,Destination支持并发访问,Session,MessageProducer,MessageConsumer不支持并发访问

 

1.2一个简单的生产者和消费者(点对点队列模式queue)例子

        生产者:

public class SimpleProducer {
	private static String brokerURL = "tcp://localhost:61616"; 
	private static ConnectionFactory factory= null;
	private static Connection connection= null;
	private static Session session = null;
	private static Destination destination = null;
	private static MessageProducer mp = null;
	
     public static void main(String[] args) throws Exception {
    	 factory = new ActiveMQConnectionFactory(brokerURL);
    	 connection = factory.createConnection();
    	 session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
    	 destination = session.createQueue("zcf");
    	 mp = session.createProducer(destination);
    	 Message message = session.createTextMessage("hah");
    	 mp.send(message);
    	 
    	 
	}
}

        消费者:

public class SimpleResumer {
	private static String brokerURL = "tcp://localhost:61616"; 
	private static ConnectionFactory factory= null;
	private static Connection connection= null;
	private static Session session = null;
	
     public static void main(String[] args) throws Exception {
    	 factory = new ActiveMQConnectionFactory(brokerURL);
    	 connection = factory.createConnection();
    	 connection.start();
    	 session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
    	 Destination destination = session.createQueue("zcf");
    	 MessageConsumer consumer = session.createConsumer(destination);
    	 Message message = consumer.receive();
    	 TextMessage textMessage = (TextMessage) message;
    	 System.out.println(textMessage.getText());
    	/* ;
    	 mp = session.createProducer(destination);
    	 Message message = session.createTextMessage("hah");
    	 mp.send(message);*/
    	 
    	 
	}
}

     消费者异步消费:

public class SimpleResumerAsync {
	private static String brokerURL = "tcp://localhost:61616"; 
	private static ConnectionFactory factory= null;
	private static Connection connection= null;
	private static Session session = null;
	
     public static void main(String[] args) throws Exception {
    	 factory = new ActiveMQConnectionFactory(brokerURL);
    	 connection = factory.createConnection();
    	 connection.start();
    	 session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
    	 Destination destination = session.createQueue("zcf");
    	 MessageConsumer consumer = session.createConsumer(destination);
    	 consumer.setMessageListener(new MessageListener() {
			
			@Override
			public void onMessage(Message message) {
				System.out.println(message);
			}
		});

	}
}

 

 

1.3一个简单的发布订阅模式(一对多非持久化)例子

     

package com.zcf.activemq.simpleexample;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
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 org.apache.activemq.ActiveMQConnectionFactory;
/**
 * 异步接受消息
 * @author cfzhou
 *
 */
public class SimpleTopicResumerAsync {
	private static String brokerURL = "tcp://localhost:61616"; 
	private static ConnectionFactory factory= null;
	private static Connection connection= null;
	private static Session session = null;
	
     public static void main(String[] args) throws Exception {
    	 factory = new ActiveMQConnectionFactory(brokerURL);
    	 connection = factory.createConnection();
    	 connection.start();
    	 session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
    	 new Thread(new ResumerThread()).start();

	}
   private static  class ResumerThread implements Runnable{

		@Override
		public void run() {
			for(int i = 0 ;i < 3;i++){		    	
				try {
					Destination destination = session.createTopic("topic");					
					MessageConsumer consumer = session.createConsumer(destination);
			    	 consumer.setMessageListener(new MessageListener() {						
						@Override
						public void onMessage(Message message) {
							System.out.println(message);
						}
					});
				} catch (JMSException e) {
					e.printStackTrace();
				}
			}
			 
		}
    	 
     }
}

 

package com.zcf.activemq.simpleexample;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
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 org.apache.activemq.ActiveMQConnectionFactory;
/**
 * 异步接受消息
 * @author cfzhou
 *
 */
public class SimpleQueueResumerAsync {
	private static String brokerURL = "tcp://localhost:61616"; 
	private static ConnectionFactory factory= null;
	private static Connection connection= null;
	private static Session session = null;
	
     public static void main(String[] args) throws Exception {
    	 factory = new ActiveMQConnectionFactory(brokerURL);
    	 connection = factory.createConnection();
    	 connection.start();
    	 session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
    	 Destination destination = session.createQueue("zcf");
    	 MessageConsumer consumer = session.createConsumer(destination);
    	 consumer.setMessageListener(new MessageListener() {
			
			@Override
			public void onMessage(Message message) {
				System.out.println(message);
			}
		});

	}
}

 

分享到:
评论

相关推荐

    OSB中JMS配置及队列使用说明

    3. 创建 JMS 模块:创建 JMS 模块是 JMS 配置的第三步,JMS 模块是 JMS 服务器的配置文件。 4. 添加 JMS 资源构件:添加 JMS 资源构件是 JMS 配置的第四步,JMS 资源构件是 JMS 消息的提供者。 5. 添加 JMS 连接工厂...

    JMS简单示例1

    在"JMS示例"中,通常会展示如何创建一个简单的消息生产和消费流程: 1. **创建连接工厂(ConnectionFactory)**:这是连接到消息代理的桥梁,JMS API提供创建连接工厂的方法。 2. **创建连接(Connection)**:...

    轻量级JavaEE企业应用实战 第四版 第一章源码

    9. **依赖管理和构建工具**:现代JavaEE开发常使用Maven或Gradle等构建工具进行依赖管理,虽然源码包中没有明确列出,但这些工具能帮助开发者组织项目结构、管理第三方库,并自动化构建过程。 通过分析这些源码,...

    ESB应用JMS_Router

    4. **JBoss ESB工程创建**:创建一个JBoss ESB工程是使用JMS Router的第一步。虽然操作过程未详细描述,通常包括安装和配置JBoss ESB服务器,创建一个新的ESB项目,并导入必要的库和依赖。 5. **消息队列配置**:在...

    经典Java EE企业应用开发实战第二章源码

    在本资源中,“经典Java EE企业应用开发实战第二章源码”是一个针对Java EE企业级应用开发的学习资料,主要关注的是实际操作和编程实践。Java EE(Enterprise Edition),也被称为Java SE(Standard Edition)的扩展...

    Apress - Professional Jms Programming.pdf

    ### 第三章:JMS消息 本章详细讲解了JMS消息的类型(如文本消息、映射消息、对象消息等),以及如何使用JMS API构造和解析这些消息。特别强调了如何利用消息属性和消息选择器进行高级消息处理。 ### 第四章:点对...

    用JMS编程

    1. **广泛的支持与兼容性**:作为第一个获得广泛跨行业支持的企业消息传递API,JMS确保了开发者可以轻松地与不同的消息中间件集成。 2. **简化应用程序开发**:通过标准化的消息传递概念和惯例,JMS简化了企业应用...

    JMS规范教程(中文)

    第3章JMS通用设施 JMS提供了一些通用设施以帮助开发者更好地管理和使用消息服务。这些设施包括被管理的对象(如目的地和连接工厂)、连接、会话、消息生产者和消费者。JMS定义了不同的目的地类型,如队列(Queue)和...

    JMS配置文档

    创建JMS服务器是配置JMS的第一步。在WebLogic管理控制台中,导航到“服务”&gt;“JMS”&gt;“JMS服务器”,然后点击“新建”按钮。你需要为JMS服务器提供一个名称,并选择一个服务器实例来承载这个JMS服务器。JMS服务器将...

    websphere jms配置

    ### 第三步:创建目标资源 目标资源是消息的目标点,如队列或主题。在"目标资源"下,点击"目标" -&gt; "新建",选择"主题空间",然后按照向导设置标识,最后点击"完成"。 ### 第四步:配置主题连接工厂 主题连接工厂...

    Weblogic 创建一个简单的EJB项目

    在本教程中,我们将探讨如何在WebLogic环境中创建一个简单的EJB(Enterprise JavaBean)项目。 首先,我们需要了解EJB的基本概念。EJB是Java EE平台的核心组件之一,它为开发可部署在服务器端的企业级应用提供了...

    企业级weblogic应用第二章

    在企业级IT环境中,WebLogic Server是Oracle公司提供的一个强大且功能丰富的Java EE应用程序服务器,广泛用于构建、部署和管理企业级应用。本章节将深入探讨WebLogic在实际操作中的运用,以“企业级WebLogic应用第二...

    activemq与spring整合发送jms消息入门实例

    本教程将深入探讨如何将这两个强大的工具结合在一起,以创建一个简单的发送JMS消息的入门实例。 首先,我们需要理解ActiveMQ的基本概念。ActiveMQ是Apache软件基金会开发的一个开源消息代理,它实现了JMS规范,提供...

    编码实现MQ连接池实现JMS消息发送连接管理

    在连接池实现中,我们需要一个池化的ConnectionFactory,这通常通过第三方库如Apache Commons Pool或HikariCP来实现。这个Factory会负责创建和管理JMS Connection实例。 3. **配置连接池**:配置连接池参数,包括...

    Java程序设计及应用开发教程

    Java程序设计及应用开发教程是面向初学者和进阶者的一门重要课程,旨在深入讲解Java编程语言的基础知识以及在实际应用中的...无论是准备参加面试,还是希望在工作中提升Java技术水平,这门教程都是一个很好的学习资源。

    精通Java EE:精通Java EE 整合应用案例\源代码12-14章

    1. **Servlet**:Servlet是Java EE的核心组件之一,它是一个Java类,用于扩展服务器的功能。在第12-14章中,可能涉及了Servlet的生命周期、请求响应处理、会话管理以及Servlet与JSP的协同工作。 2. **JSP(Java...

Global site tag (gtag.js) - Google Analytics