`
newleague
  • 浏览: 1504772 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

Spring与Jms结合的实例

    博客分类:
  • JMS
 
阅读更多

另见:

ActiveMQ5.0实战一: 安装配置ActiveMQ5.0
ActiveMQ5.0实战二: 基本配置
http://www.iteye.com/topic/234101
================================================

 

环境:apache-activemq-5.4.2 ,spring2.5,jdk1.6

首先启动消息代理:在apache-activemq-5.4.2\bin下
运行
activemq.bat。

 

example1:

package jms.activemq.myexample.spring;

import java.util.Date;

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.springframework.jms.core.MessageCreator;

public class MyMessageCreator implements MessageCreator {

 /**
  * 消息序号
  */
 private int msgNo;

 public MyMessageCreator(int no) {
  this.msgNo = no;
 }

 @Override
 public Message createMessage(Session session) throws JMSException {
  TextMessage textMsg = session.createTextMessage();
  textMsg.setText(new Date() + "第" + this.msgNo + "条消息发出");

  return textMsg;
 }

}

package jms.activemq.myexample.spring;

import javax.jms.*;

/**
 * Text消息监听
 *
 * @author xiaochuanyu
 *
 */
public class TextListener implements MessageListener {

 /**
  * Casts the message to a TextMessage and displays its text.
  *
  * @param message
  *            the incoming message
  */
 public void onMessage(Message message) {
  TextMessage msg = null;

  try {
   if (message instanceof TextMessage) {
    msg = (TextMessage) message;
    System.out.println("Reading message: " + msg.getText());
   } else {
    System.out.println("Message of wrong type: "
      + message.getClass().getName());
   }
  } catch (JMSException e) {
   System.out.println("JMSException in onMessage(): " + e.toString());
  } catch (Throwable t) {
   System.out.println("Exception in onMessage():" + t.getMessage());
  }
 }
}

package jms.activemq.myexample.spring;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class SpringJmsTestMain {

 public static void main(String[] args) throws InterruptedException {

  ApplicationContext context = new ClassPathXmlApplicationContext(
    new String[] { "SpringJms/SpringJms.xml" });

  SpringPublisher publisher = (SpringPublisher) context
    .getBean("springPublisher");
  publisher.start();
 }
}

package jms.activemq.myexample.spring;

import javax.jms.Destination;

import org.springframework.jms.core.JmsTemplate;

public class SpringPublisher {
 /**
  * Jms模板
  */
 private JmsTemplate template;

 /**
  * Topic
  */
 private Destination topic;

 public JmsTemplate getTemplate() {
  return template;
 }

 public void setTemplate(JmsTemplate template) {
  this.template = template;
 }

 public Destination getTopic() {
  return topic;
 }

 public void setTopic(Destination topic) {
  this.topic = topic;
 }

 /**
  * Start
  *
  * @throws InterruptedException
  */
 public void start() throws InterruptedException {

  int messageCount = 10;

  while ((--messageCount) > 0) {
   sendMessage(messageCount);
   Thread.sleep(1000);
  }
 }

 /**
  * 消息发送
  */
 protected void sendMessage(int msgNO) {

  this.template.send(this.topic, new MyMessageCreator(msgNO));
 }
}


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="
http://www.springframework.org/schema/beans"
    xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

 

    <!-- jms 连接工厂 -->
    <bean id="jmsFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
        <property name="brokerURL">
            <value>tcp://localhost:61616</value>
        </property>
    </bean>


    <!-- jms 连接池 -->
   
    <!-- 
    <bean id="pooledJmsFactory" class="org.apache.activemq.pool.PooledConnectionFactory">
        <property name="connectionFactory">
            <ref local="jmsFactory" />
        </property>
    </bean>
    -->

    <!-- jms Topic -->
    <bean id="myTopic" class="org.apache.activemq.command.ActiveMQTopic"
        autowire="constructor">
        <constructor-arg value="STOCKS.JAVA" />
    </bean>


    <!-- 消息监听器 -->
    <bean id="myTextListener" class="jms.activemq.myexample.spring.TextListener">
    </bean>


    <!-- jms Consumer -->
    <bean id="javaConsumer"
        class="org.springframework.jms.listener.DefaultMessageListenerContainer">
        <property name="connectionFactory" ref="jmsFactory" />
        <property name="destination" ref="myTopic" />
        <property name="messageListener" ref="myTextListener" />
    </bean>

    <!-- jms 模板 -->
    <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
        <property name="connectionFactory">
            <ref local="jmsFactory" />
        </property>
    </bean>


    <!-- 消息发布器 -->
    <bean id="springPublisher" class="jms.activemq.myexample.spring.SpringPublisher">
        <property name="template">
            <ref local="jmsTemplate" />
        </property>
        <property name="topic">
            <ref local="myTopic" />
        </property>
    </bean>
</beans>

===================================================

example2:

package stujms.p2ptxt;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;

import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;

/**
* 消息发送者
*
* @author leizhimin 2009-8-13 17:01:48
*/
public class MySender {
        public static void main(String[] args) {
                ApplicationContext ctx = new ClassPathXmlApplicationContext("/applicationContext.xml");
                JmsTemplate template = (JmsTemplate) ctx.getBean("jmsTemplate");
                Destination destination = (Destination) ctx.getBean("destination");

                template.send(destination, new MessageCreator() {
                        public Message createMessage(Session session) throws JMSException {
                                return session.createTextMessage("发送消息:Hello ActiveMQ Text Message!");
                        }
                });
                System.out.println("成功发送了一条JMS消息");
        }
}
package stujms.p2ptxt;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jms.core.JmsTemplate;

import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.TextMessage;

/**
* 消息接收者
*
* @author leizhimin 2009-8-13 17:02:04
*/
public class MyReceiver {
        public static void main(String[] args) throws JMSException {
                ApplicationContext ctx = new ClassPathXmlApplicationContext("/applicationContext.xml");
                JmsTemplate template = (JmsTemplate) ctx.getBean("jmsTemplate");
                Destination destination = (Destination) ctx.getBean("destination");
                while (true) {
                        TextMessage txtmsg = (TextMessage) template.receive(destination);
                        if (null != txtmsg)
                                System.out.println("收到消息内容为: " + txtmsg.getText());
                        else
                                break;
                }
        }
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="
http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:context="
http://www.springframework.org/schema/context"
             xsi:schemaLocation="
http://www.springframework.org/schema/beans
       
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
       
http://www.springframework.org/schema/context
       
http://www.springframework.org/schema/context/spring-context-2.5.xsd">

        <!-- 配置JMS连接工厂 -->
        <bean id="connectionFactory" class="org.apache.activemq.spring.ActiveMQConnectionFactory">
                <property name="brokerURL" value="tcp://localhost:61616"/>
        </bean>

        <!-- 配置JMS模版 -->
        <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
                <property name="connectionFactory" ref="connectionFactory"/>
        </bean>

        <!-- 发送消息的目的地(一个队列) -->
        <bean id="destination" class="org.apache.activemq.command.ActiveMQQueue">
                <!-- 设置消息队列的名字 -->
                <constructor-arg index="0" value="HelloWorldQueue"/>
        </bean>
</beans>
运行发送端三次:
成功发送了一条JMS消息

Process finished with exit code 0
然后再运行接收端一次:
收到消息内容为: 发送消息:Hello ActiveMQ Text Message!
收到消息内容为: 发送消息:Hello ActiveMQ Text Message!
收到消息内容为: 发送消息:Hello ActiveMQ Text Message!
继续测试发现,接收端接收一条消息后不退出程序,而是继续等待,一旦有消息发送过来,就获取到,然后输出!

 

分享到:
评论

相关推荐

    spring与jms结合实例

    ### Spring与JMS结合实例详解 #### 一、引言 在现代企业级应用开发中,消息中间件作为实现系统间解耦、提高系统稳定性的关键组件被广泛应用。Java消息服务(Java Message Service, JMS)是Java平台中关于面向消息...

    JMS整合Spring实例

    下面将详细介绍如何整合JMS与Spring,以及一个简单的实例。 ### 1. 添加依赖 首先,你需要在项目的构建文件(如Maven的pom.xml或Gradle的build.gradle)中添加JMS和Spring的依赖。通常,这包括JMS API、一个JMS...

    spring_jms

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

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

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

    JMS实例,整合spring,含jar

    本实例中,"JMS实例,整合spring,含jar"表明这是一个具体的项目示例,展示了如何在Spring框架中配置和使用JMS。这通常涉及到以下步骤: 1. **添加依赖**:首先,你需要在项目的构建文件(如Maven的pom.xml或Gradle的...

    JMS完全实例(八个实例)

    **JMS完全实例详解** Java消息服务(Java Message Service,简称JMS)是Java平台中用于企业级应用间异步通信的一种标准接口。...同时,结合Spring框架的使用,能让你更好地在实际工作中利用JMS实现高效、可靠的通信。

    Spring-JMS把企业消息处理变容易.doc

    Spring JMS 是一个强大的框架,它极大地简化了Java企业级消息处理。它通过提供一套抽象和模板类,使得开发者能够更加便捷地使用Java消息服务(JMS),并与各种JMS提供者,如IBM的WebSphere MQ进行集成。本文将深入...

    spring整合jms+activemq

    本文将深入探讨如何在Spring 3.0中整合JMS与ActivemQ,以及它们在实际应用中的关键知识点。 首先,我们要了解Spring对JMS的支持。Spring通过其`org.springframework.jms`包提供了丰富的JMS抽象,简化了JMS的使用。...

    activeMQ-JMS实例

    总结来说,"activeMQ-JMS实例"是一个基于Spring MVC的示例,它演示了如何使用Spring的JMS支持与ActiveMQ结合,实现消息的发送和接收。这个实例对于学习和理解JMS以及如何在实际项目中应用它是很有帮助的。通过这个...

    Spring整合Weblogic jms实例详解

    Spring 整合 Weblogic JMS 实例详解 Spring 整合 Weblogic JMS 实例详解是指在 Spring 框架下整合 Weblogic JMS 服务器,以便在应用程序中使用 JMS messaging。这种整合方式可以提供高性能、可靠性和灵活性的消息...

    JMS与SPRING的整合实例(基于Apache ActiveMQ)

    JMS与SPRING的整合实例(基于Apache ActiveMQ) 定义JMS连接工厂 定义JMS Template 定义消息目的地 定义接收监听器 定义一个JMS话题 定义消费者(接收端) 定义发布者 JAVA核心代码一般由三个部分组成: 监听器...

    tomcat spring jms 异步消息传递入门实例

    本教程将带你逐步了解如何利用Tomcat、Spring和JMS(Java Message Service)构建一个简单的异步消息传递入门实例。 首先,让我们来理解一下核心组件: 1. **Tomcat**:这是一个流行的开源Java Servlet容器,用于...

    spring jms tomcat 异步消息传递入门实例

    综上所述,"spring jms tomcat 异步消息传递入门实例"旨在引导开发者理解如何在Spring应用中结合Tomcat使用JMS实现异步消息传递,从而提升系统的响应能力和处理大规模并发的能力。通过这个实例,你可以学习到Spring...

    基于Spring+JMS+ActiveMQ+Tomcat的整合ActiveMQSpringDemo实例源码.zip

    基于Spring+JMS+ActiveMQ+Tomcat的整合ActiveMQSpringDemo实例源码,此实例基于Spring+JMS+ActiveMQ+Tomcat,注解的完整实例,包含jar包,可供学习及设计参考。

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

    在整合Spring与JMS时,我们首先需要配置`ConnectionFactory`,它是创建与JMS服务器连接的工厂。对于ActiveMQ,我们可以创建一个`ActiveMQConnectionFactory`实例,并设置服务器地址、端口等参数。例如: ```xml ...

    weblogic与jms+spring

    WebLogic与JMS+Spring的整合利用了WebLogic的稳定性和JMS的异步通信能力,结合Spring的灵活性和易用性,为开发高效、可扩展的企业级应用提供了强大的基础。通过详细的配置和测试,开发者可以确保系统能够正确地处理...

    Spring整合JMS

    然而,需要注意的是,尽管Spring提供了ConnectionFactory的配置,但真正的JMS连接是由JMS服务厂商提供的ConnectionFactory来创建的,Spring中的bean需要将这个实际的工厂实例注入到Spring容器中。 10. 发布和订阅...

    spring+jms+activemq

    本文将深入探讨如何使用Spring框架与ActiveMQ结合实现基于JMS的消息传递系统。 首先,理解JMS的基本概念至关重要。JMS定义了生产者(Producer)、消费者(Consumer)和消息队列(Queue)或主题(Topic)等核心组件...

    JMS之Spring +activeMQ实现消息队列

    通过阅读和理解这些代码,你可以更好地了解Spring与ActiveMQ结合使用时的具体实现细节。 总的来说,通过Spring与ActiveMQ的整合,我们可以构建出可靠、高效的消息队列系统,从而改善系统的响应时间,提高可扩展性和...

    spring中集成JMS使用工程实例..eclipse项目例子,带注解.导入即可运行.

    下面将详细介绍Spring与JMS集成的相关知识点。 1. **Spring JMS概述** Spring框架提供了强大的支持来简化JMS的使用,包括自动配置、模板化API以及消息监听容器。通过Spring,我们可以轻松地创建生产者和消费者,...

Global site tag (gtag.js) - Google Analytics