`
cleaneyes
  • 浏览: 335574 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JMS收发

    博客分类:
  • Java
JMS 
阅读更多

dd

public class JMSConsumer implements MessageListener{
	private ConnectionFactory connectionFactory;

	private boolean transacted = false;

	public JMSConsumer(ConnectionFactory connectionFactory)
			throws JMSException, IOException {
		this.connectionFactory = connectionFactory;
	}

	public void consumeQueueMessage(String queueName,
			MessageListener messageListener) throws JMSException {
		Connection connection = null;
		Session session = null;

		connection = this.connectionFactory.createConnection();
		session = connection
				.createSession(transacted, Session.AUTO_ACKNOWLEDGE);

		Destination destination = session.createQueue(queueName);
		MessageConsumer consumer = session.createConsumer(destination);

		connection.start();
		System.out.println("Consumer:->Begin listening...");
		/**
		 * 如果想主动的去接受消息,而不用消息监听的话,把consumer.setMessageListener(this) 改为Message
		 * message = consumer.receive(), 手动去调用MessageConsumer的receive方法即可.
		 */
		// 开始监听
		consumer.setMessageListener(messageListener); // 异步监听

	}
	
	public void consumeTopicMessage(String topicName,
			MessageListener messageListener) throws JMSException {
		Connection connection = null;
		Session session = null;

		connection = this.connectionFactory.createConnection();
		session = connection
				.createSession(transacted, Session.AUTO_ACKNOWLEDGE);

		Destination destination = session.createTopic(topicName);		
		MessageConsumer consumer = session.createConsumer(destination);

		connection.start();
		System.out.println("Consumer:->Begin listening...");
		/**
		 * 如果想主动的去接受消息,而不用消息监听的话,把consumer.setMessageListener(this) 改为Message
		 * message = consumer.receive(), 手动去调用MessageConsumer的receive方法即可.
		 */
		// 开始监听
		consumer.setMessageListener(messageListener); // 异步监听

	}

	public void onMessage(Message message) {
		// TODO Auto-generated method stub
		System.out.println("message:" + message.toString());
	}

 

public class JMSProducer {
	private ConnectionFactory connectionFactory;
	private boolean transacted = false;

	public JMSProducer(ConnectionFactory connectionFactory)
			throws JMSException, IOException {
		this.connectionFactory = connectionFactory;
	}

	/**
	 * 发送基于队列消息
	 * 
	 * @param message
	 * @param queueName
	 * @throws JMSException
	 * @throws JMSException
	 * @throws Exception
	 */
	public void produceQueueMessage(String message, String queueName)
			throws JMSException {
		Connection connection = null;
		Session session = null;

		try {
			connection = this.connectionFactory.createConnection();
			session = connection.createSession(transacted,
					Session.AUTO_ACKNOWLEDGE);

			Destination destination = session.createQueue(queueName);
			MessageProducer producer = session.createProducer(destination);

			connection.start();
			System.out.println("produceQueueMessage message = " + message);
			Message msg = session.createTextMessage(message);			

			producer.send(msg);
			producer.close();
			System.out.println("Producer:->Message sent complete!");
		} finally {
			if (session != null)
				session.close();
			if (connection != null)
				connection.close();
		}

	}

	public void produceQueueMessage(File file, String queueName)
			throws JMSException {
		Connection connection = null;
		Session session = null;

		try {
			connection = this.connectionFactory.createConnection();
			session = connection.createSession(transacted,
					Session.AUTO_ACKNOWLEDGE);

			Destination destination = session.createQueue(queueName);
			MessageProducer producer = session.createProducer(destination);

			System.out.println("produceQueueMessage file Message = "
					+ file.getName());
			byte[] bytes = this.getFileByte(file);
			

			connection.start();
			BytesMessage msg = session.createBytesMessage();
			msg.writeBytes(bytes);

			producer.send(msg);
			producer.close();
			System.out.println("Producer:->Message sent complete!");		
		} finally {
			if (session != null)
				session.close();
			if (connection != null)
				connection.close();
		}

	}

	/**
	 * 发送基于主题消息
	 * 
	 * @param message
	 * @param subject
	 * @throws JMSException *
	 * @throws Exception
	 */
	public void produceTopicMessage(String message, String topicName)
			throws JMSException {
		Connection connection = null;
		Session session = null;

		try {
			connection = this.connectionFactory.createConnection();
			session = connection.createSession(transacted,
					Session.AUTO_ACKNOWLEDGE);
			Destination destination = session.createTopic(topicName);

			MessageProducer producer = session.createProducer(destination);

			connection.setClientID("12345");
			connection.start();
			System.out.println("produceTopicMessage message = " + message);
			Message msg = session.createTextMessage(message);			

			producer.send(msg);
			producer.close();

			System.out.println("Producer:->Message sent complete!");
		} finally {
			if (session != null)
				session.close();
			if (connection != null)
				connection.close();
		}
	}

	public void produceTopicMessage(File file, String topicName)
			throws JMSException {
		Connection connection = null;
		Session session = null;

		try {
			connection = this.connectionFactory.createConnection();
			session = connection.createSession(transacted,
					Session.AUTO_ACKNOWLEDGE);

			Destination destination = session.createTopic(topicName);

			MessageProducer producer = session.createProducer(destination);

			connection.setClientID("12345");
			connection.start();

			System.out.println("produceTopicMessage file Message = "
					+ file.getName());
			byte[] bytes = this.getFileByte(file);
				
			connection.start();
			BytesMessage msg = session.createBytesMessage();

			msg.writeBytes(bytes);
			
			producer.send(msg);
			producer.close();
			System.out.println("Producer:->Message sent complete!");
		}finally {
			if (session != null)
				session.close();
			if (connection != null)
				connection.close();
		}

	}
	
	private byte[] getFileByte(File file){
        byte[] buffer = null;
        FileInputStream fin = null;
        try {            
            fin = new FileInputStream(file); 
            buffer = new byte[fin.available()];
            fin.read(buffer);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                fin.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return buffer;
    }

 

class QueueMessageListener implements MessageListener {

		public void onMessage(Message reciveMessage) {
			// TODO Auto-generated method stub
			try {
				if (reciveMessage instanceof TextMessage) {
					TextMessage new_name = (TextMessage) reciveMessage;

					String text = new_name.getText();
					System.out
							.println("QueueMessageListener onMessage:" + text);
					System.out.println("");
					assertEquals(text, message);

				} else if (reciveMessage instanceof BytesMessage) {
					BytesMessage bytesMessage = (BytesMessage) reciveMessage;
					FileOutputStream fileOutputStream;
					File file = new File(recieveFileDir + sendFileName);
					fileOutputStream = new FileOutputStream(file);					

					byte[] byteContent = readBytesContent(bytesMessage);
					fileOutputStream.write(byteContent);
					
					System.out.println("接收到消息 length:"
							+ byteContent.length);
					System.out.println();
					
					fileOutputStream.close();
				}
			} catch (JMSException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (FileNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
 

 

 

分享到:
评论

相关推荐

    JMS模拟ActiveMQ代理服务器并实现消息收发

    java JMS模拟ActiveMQ代理服务器并实现消息收发,这里是工程源码,已经过测试,可以直接使用。

    jms远程IBM MQ 收发消息

    JMS 客户端模式实现服务端、客户端;实现同步以及异步的收发处理;

    Spring整合JMS——实现收发消息

    Spring整合JMS,基于ActiveMQ实现收发消息

    从Java走向Java+EE+.rar

    18.3 实例——利用JMS收发消息 273 18.3.1 一个简单的点对点模式消息实例 273 18.3.2 一个简单的发布者/订阅者模式消息实例 279 18.4 小结 285 第19章 利用JXTA编写P2P应用 286 19.1 P2P模型 286 19.2 ...

    JMS与Spring之一(用JmsTemplate同步收发消息)

    JMS与Spring之一(用JmsTemplate同步收发消息)

    JMS与Spring之二(用message listener container异步收发消息)

    JMS与Spring之二(用message listener container异步收发消息)

    JMS与ActiveMQ

    JMS是一种与厂商无关的 API,用来访问消息收发系统。它类似于 JDBC(Java Database Connectivity):这里,JDBC 是可以用来访问许多不同关系数据库的 API,而 JMS 则提供同样与厂商无关的访问方法,以访问消息收发服务...

    JmsStream 消息收发工具

    这个工具可以收发JMS的消息,对消息中间件进行性能测试

    spring-jms.zip

    绝大多数面向消息中间件提供商都对JMS提供支持,JMS类似于JDBC(Java Database Connectivity),JDBC 是可以用来访问许多不同关系数据库的API,而JMS则提供同样与厂商无关的访问方法,用来访问消息收发服务。...

    JMS完全实例(八个实例)

    含有八个独立运行的程序,分别设计JMS多个方面。 工程使用ActiveMQ,运行工程之前,请阅读doc.txt文档,并运行ActiveMQ

    spring整合JMS实现同步收发消息(基于ActiveMQ的实现)

    本篇文章主要介绍了spring整合JMS实现同步收发消息(基于ActiveMQ的实现),具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    基于JMS体系结构的消息服务技术的应用研究

    根据企业应用程序间进行消息服务的实际需要,深入研究Java消息服务(Java Message Service,JMS)技术,结合其中的"发布/订阅式"和"点对点式"两种消息收发模式,提出了一个基于JMS体系结构的全新的消息服务模型,并针对股票...

    品优购_day13_SpringJms_V1.31

    品优购电商系统开发第13章消息中间件解决方案JMS 课程目标目标1:理解消息中间件、JMS等概念目标2:掌握JMS点对点与发布订阅模式的收发

    JMS 之 Active MQ 的消息传输(详解)

    下面小编就为大家带来一篇JMS 之 Active MQ 的消息传输(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    ActiveMQ实现的消息收发案例

    基于ActiveMQ实现简单的消息收发案例 ,详情请参见博文:http://blog.csdn.net/l1028386804/article/details/68969450

    ActiveMQ基本使用与优化

    JMS是一种与厂商无关的 API,用来访问消息收发系统消息。它类似于JDBC(Java Database Connectivity),提供了应用程序之间异步通信的功能。 本文档介绍ActiveMQ的基本使用和部分性能优化。

    基于jbpm与activiti的工作流平台技术架构介绍

    基础组件包括: Spring基础组件库,报表引擎,数据库访问模块,短信模块,后台定时任务调用组件,短信访问组件,搜索引擎组件,JMS消息组件,Activiti工作流组件,Cas统一用户认证组件,Spring安全认证组件。...

    2小时学会Spring+Dubbo整合ActiveMQ消息队列

    让你更了解互联网是如何解决高并发 学完SSM框架的同学就可以学习,能让你切身感受到企业级开发环境目标1:理解消息中间件、JMS等概念目标2:掌握JMS点对点与发布订阅模式的收发消息目标3:掌握SpringJms目标4:完成...

    Java优化编程(第2版)

    9.1 jms消息收发模式及其各自适用场合 9.2 发送与接收jms消息 9.3 优化jms中的会话对象 9.4 优化连接对象 9.5 优化消息目的地destination及消息生产者与消费者 9.6 优化消息对象及合理使用事务机制 9.7 影响jms性能...

Global site tag (gtag.js) - Google Analytics