`
cleaneyes
  • 浏览: 343477 次
  • 性别: 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远程IBM MQ 收发消息

    本教程将深入探讨如何使用JMS客户端模式来实现与IBM MQ的远程通信,包括同步和异步的消息收发处理。 首先,理解JMS的基本概念至关重要。JMS提供两种主要的消息模型:点对点(Point-to-Point,P2P)和发布/订阅...

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

    JMS与Spring之二(用message listener container异步收发消息) 在本文中,我们将探讨使用 message listener container 在 Spring 框架中异步收发 JMS 消息的方法。Message listener container 是 Spring 提供的一...

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

    本篇文章将详细探讨如何通过Spring框架整合JMS,特别是使用ActiveMQ作为消息代理来实现消息的收发功能。 首先,我们需要理解Spring对JMS的支持。Spring提供了`org.springframework.jms`包,包含了一系列接口和类,...

    Mule与MQ集成

    - 创建JMS收发消息的端点(Endpoints),用于消费和发布消息。 - 编写Mule流程,指定何时和如何发送和接收消息。 - 配置ActiveMQ的URL、用户名和密码等连接参数。 通过这样的集成,Mule应用能够利用ActiveMQ的可靠...

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

    JMS与Spring之一(用JmsTemplate同步收发消息) JMS(Java Message Service)是一种Java API,用于在两个应用程序之间异步地发送消息。Spring框架提供了对JMS的支持,允许开发者使用JMS template或message listener...

    从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完全实例(八个实例)

    1. **JMS简单收发** JMS的基本操作是发送和接收消息。在这些实例中,我们将看到如何使用生产者(Producer)创建消息并发送到队列(Queue)或主题(Topic)。消费者(Consumer)则从这些队列或主题中接收消息。理解...

    SOAPOverJMSUsingMuleSample:SOAP Over JMS 使用 Mule

    这通常通过 Mule 的 JMS 收发器实现。 4. **构建 JMS 到 SOAP 转换器**:当 Mule 从 JMS 接收到消息时,需要将 JMS 消息转换回 SOAP 响应。这涉及到解封装 JMS 消息体,并创建相应的 SOAP 响应。 5. **设置响应...

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

    Spring 整合 JMS 实现同步收发消息(基于 ActiveMQ 的实现) Spring 整合 JMS 实现同步收发消息是指在 Spring 框架下使用 JMS(Java Message Service)协议来实现消息的同步收发。JMS 是一个基于 Java 的消息服务 ...

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

    Java消息服务(Java Message Service,简称JMS)是Java平台中用于创建、发送、接收和读取消息的应用程序编程接口(API)。它提供了一种标准的方式来传输数据,使得应用程序可以在分布式环境中交换信息,而不必关心...

    jms简介.pdf

    ### JMS (Java Message Service) 简介 #### 一、JMS 概述 JMS(Java Message Service)是一套由Sun Microsystems及其合作伙伴共同制定的Java API标准,旨在为Java应用程序提供创建、发送、接收及读取消息的服务。...

    activeMQ收发工具.rar

    ActiveMQ收发工具利用JMS接口与ActiveMQ服务器进行通信。 2. **消息模型**:掌握点对点(Queue)和发布/订阅(Topic)两种消息模型。点对点模型确保每个消息仅被一个消费者接收,而发布/订阅模型允许多个订阅者接收...

    JMX与JMS的概念

    **JMX(Java Management Extensions)** 是 Java 平台...在实际应用中,两者可以协同工作,例如,JMX 可用于监控消息队列的状态,而 JMS 负责消息的收发。理解这两个概念对于构建可扩展、可维护的分布式系统至关重要。

    JmsStream 消息收发工具

    `JmsStream`是一款专为JMS(Java Message Service)设计的消息收发工具,它主要用于测试和评估消息中间件的性能。通过这款工具,用户能够便捷地发送和接收JMS消息,从而在实际应用环境中评估消息系统的吞吐量、响应...

    spring-jms.zip

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

    JMS IBM MQ 订阅模式

    3. **创建会话**:在Connection上创建一个Session,设置事务性和收发模式。 4. **创建Topic**:使用MQAdmin工具或者编程方式在IBM MQ服务器上创建Topic。 5. **创建发布者**:在Session上创建一个Producer,用于...

    一种基于JMS和XML的大型矩阵分布式计算系统的设计方案.pdf

    本文采用了WebLogic 7.0作为JMS服务器,其支持JMS规范,能够处理任务队列和结果队列的消息收发工作。 运算器部分由若干台PC组成,每台PC执行矩阵子块的计算任务。计算模块统一采用优化的算法,以提高计算效率。运算...

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

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

Global site tag (gtag.js) - Google Analytics