学习笔记——JMS示例

原创 2012年03月21日 19:50:35
 

发送消息示例:

import javax.jms.*;
import javax.naming.*;
import java.util.Properties;

public class MesssageSender {
	public void sendMessage() throws NamingException, JMSException {
		//定义WebLogic默认连接工厂的JNDI
		final String CONNECTION_FACTORY_JNDI = "weblogic.jms.ConnectionFactory";
		//获取JNDI服务所需的Context
		Context context = getInitialContext();
		//通过JNDI查找获取连接工厂
		ConnectionFactory connectionFactory = (ConnectionFactory)context.lookup(CONNECTION_FACTORY_JNDI); 
		//通过JNDI查找获取消息目的
		Destination destination = (Destination)context.lookup("MessageQueue");
		//连接工厂创建连接
		Connection connection = connectionFactory.createConnection();
		//JMS连接创建JMS会话
		Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
		//JMS会话创建消息生产者
		MessageProducer sender = session.createProducer(destination);
		//设置消息生产者生产出来的消息的传递模式、有效时间。
		sender.setDeliveryMode(DeliveryMode.PERSISTENT);
		sender.setTimeToLive(20000);
		//通过JMS会话创建一个文本消息
		TextMessage message = session.createTextMessage();
		//message.setStringProperty("ConType","txt");
		message.setText("Hello");
		sender.send(message);
		session.close();
		connection.close();
	}
	
	private Context getInitialContext() {
		final String INIT_FACTORY = "weblogic.jndi.WLInitialContextFactory";
		final String SERVER_URL = "t3://localhost:7001";
		Context context = null;
		try {
			Properties properties = new Properties();
			properties.put(Context.INITIAL_CONTEXT_FACTORY, INIT_FACTORY);
			properties.put(Context.PROVIDER_URL , SERVER_URL);
			context = new InitialContext(properties);
		}
		catch (NamingException exception) {
			System.err.println("不能连接WebLogic Server在:" + SERVER_URL);
			ne.printStackTrace();
		}
	}
	
	public static void main(String[] args) {
		MessageSender messageSender = new MessageSender();
		messageSender.sendMessage();
	}
}


消息同步接收示例:

 

import javax.jms.*;
import javax.naming.*;
import java.util.Properties;

public class SyncConsumer {	 
	public void receiveMessage()
		throws JMSException , NamingException {
		//定义WebLogic默认连接工厂的JNDI
		final String CONNECTION_FACTORY_JNDI = "weblogic.jms.ConnectionFactory";
		//获取JNDI服务所需的Context
		Context context = getInitialContext();
		//通过JNDI查找获取连接工厂
		ConnectionFactory connectionFactory = (ConnectionFactory)context.lookup(CONNECTION_FACTORY_JNDI);
		//通过JNDI查找获取消息目的	
		Destination destination = (Destination)context.lookup("MessageQueue");
		//连接工厂创建连接
		Connection connection = connectionFactory.createConnection();
		//启动JMS连接,让它开始传输JMS消息
		connection.start();
		//JMS连接创建JMS会话
		Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
		//JMS会话创建消息消费者
		MessageConsumer receiver = session.createConsumer(destination);
		//同步接收消息,如果没有接收到消息,该方法会阻塞线程
		TextMessage message = (TextMessage)receiver.receive();
		System.out.println(message);
		System.out.println("同步接收到的消息:" + message.getText());
		//关闭资源
		session.close();
		connection.close();
	}
	//工具方法,用来获取命名服务的Context对象
	private Context getInitialContext() {
		final String INIT_FACTORY = "weblogic.jndi.WLInitialContextFactory";
		final String SERVER_URL = "t3://localhost:7001";
		Context context = null;
		try {
			Properties properties = new Properties();
			properties.put(Context.INITIAL_CONTEXT_FACTORY , INIT_FACTORY);
			properties.put(Context.PROVIDER_URL , SERVER_URL);
			context = new InitialContext(properties);
		}
		catch(NamingException ne) {
			System.err.println("不能连接WebLogic Server在:"
				+ SERVER_URL);
			ne.printStackTrace();
		}
		return context;
	}
	public static void main(String[] args)
		throws Exception {
		SyncConsumer mp = new SyncConsumer();
		mp.receiveMessage();
	}
}

 

消息异步接受示例:

 

import javax.jms.*;
import javax.naming.*;
import java.util.Properties;

public class AsyncConsumer
	implements MessageListener {
	public AsyncConsumer()throws NamingException
		,JMSException , InterruptedException {
		//定义WebLogic默认连接工厂的JNDI
		final String CONNECTION_FACTORY_JNDI = "weblogic.jms.ConnectionFactory";
		//获取JNDI服务所需的Context
		Context context = getInitialContext();
		//通过JNDI查找获取连接工厂
		ConnectionFactory connectionFactory = (ConnectionFactory)context.lookup(CONNECTION_FACTORY_JNDI); 
		//通过JNDI查找获取消息目的
		Destination destination = (Destination)context.lookup("MessageQueue");
		//连接工厂创建连接
		Connection connection = connectionFactory.createConnection();
		//启动JMS连接,让它开始传输JMS消息
		connection.start();
		//JMS连接创建JMS会话	
		Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
		//JMS会话创建消息消费者
		MessageConsumer receiver = session.createConsumer(destination);
		//为JMS消息消费者绑定消息监听器
		receiver.setMessageListener(this);
		//程序暂停20s,在此期间内以异步方式接收消息
		Thread.sleep(20000);
		//关闭资源
		session.close();
		connection.close();
	}
	//实现消息监听器必须实现的方法。
	public void onMessage(Message m) {
		TextMessage message = (TextMessage)m;
		System.out.println(message);
		try {
			System.out.println("异步接收的消息:" + message.getText());
		}
		catch (JMSException ex) {
			ex.printStackTrace();
		}
	}
	//工具方法,用来获取命名服务的Context对象
	private Context getInitialContext() {
		final String INIT_FACTORY = "weblogic.jndi.WLInitialContextFactory";
		final String SERVER_URL = "t3://localhost:7001";
		Context context = null;
		try {
			Properties properties = new Properties();
			properties.put(Context.INITIAL_CONTEXT_FACTORY , INIT_FACTORY);
			properties.put(Context.PROVIDER_URL , SERVER_URL);
			context = new InitialContext(properties);
		}
		catch(NamingException ne) {
			System.err.println("不能连接WebLogic Server在:" + SERVER_URL);
			ne.printStackTrace();
		}
		return context;
	}
	public static void main(String[] args)
		throws Exception {
		AsyncConsumer consumer = new AsyncConsumer();
	}
}





                

JMS和ActiveMQ学习笔记

[1] 在介绍ActiveMQ之前,首先简要介绍一下JMS规范。 JMS的简介: (1) JMS(Java Message Service,Java消息服务)是一组Java应用程序接口(Jav...
  • s296850101
  • s296850101
  • 2016年09月01日 17:39
  • 916

JMS 示例

JMS 开发示例。 使用weblogic8作为jms server。 1、在weblogic中配置JMS。       配置JMS connection factory    ...
  • xiouluoyang
  • xiouluoyang
  • 2016年08月01日 11:01
  • 184

C++学习笔记一(对象和类)

` C++对于我而言,就像知音一样,慢慢的才有。学完C语言之后,开始学的C++,但那个时候太浪,经常性的逃课,导致我的C++水平一直处于小学生那个阶段,进入视觉领域之后才又开始接触C++,这就尴尬了,...
  • mars_xiaolei
  • mars_xiaolei
  • 2017年01月10日 13:33
  • 138

JMS学习笔记(一)——JMS基础

一,JMS的基本概念
  • lkl713
  • lkl713
  • 2014年04月11日 11:04
  • 1321

深入浅出JMS(一)--JMS基本概念

摘要:JMS(JAVA Message Service,java消息服务)API是一个消息服务的标准或者说是规范,允许应用程序组件基于JavaEE平台创建、发送、接收和读取消息。它使分布式通信耦合度更...
  • jiuqiyuliang
  • jiuqiyuliang
  • 2015年06月30日 22:23
  • 144259

JMS应用示例教程

原文:http://qidaoxp.iteye.com/blog/480047 本示例分别对Queue/Topic的发送和接收做了详细的测试。 StaticInfo.java----存放J...
  • Quincylk
  • Quincylk
  • 2013年03月06日 17:45
  • 3811

用Spring JMS使异步消息变得简单

异步处理通信是面向服务架构(SOA)的重要部分,因为企业中的许多系统通信,尤其是跟外部系统通信本来就是异步的。Java消息服务(JMS)就是用来编写异步消息J2EE应用的API。使用JMS API的传...
  • ark1111
  • ark1111
  • 2006年09月09日 00:53
  • 6576

《JMS学习笔记》

《JMS学习笔记》在看《大型网站系统与Java中间件实践》这本书的第六章中提到了JMS,于是就找了几篇JMS的博文看了下,发现有几篇博文讲解的挺好的,记录一下。JMS是Java Message Ser...
  • u010412719
  • u010412719
  • 2016年11月24日 20:05
  • 260

JMS学习笔记

JMS消息传递模式有点对点(P2P)模式和发布/订阅(Publisher/Subscriber)模式。点对点模式使用队列,发布/订阅模式使用Topic。一、P2P模式的消息发送QueueConnect...
  • impeller
  • impeller
  • 2007年04月25日 13:19
  • 695

JMS 基本可靠性机制 和 事务机制

4.3.1 基本可靠性机制 4.3.1.1 控制消息的签收(Acknowledgment) 客户端成功接收一条消息的标志是这条消息被签收。成功接收一条消息一般包括如 下三个阶段: 1.客户端接...
  • suncaishen
  • suncaishen
  • 2011年10月18日 11:17
  • 8128
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:学习笔记——JMS示例
举报原因:
原因补充:

(最多只允许输入30个字)