ActiveMQ实例2--Spring JMS发送消息

参考文章:http://my.oschina.net/xiaoxishan/blog/381209#OSC_h3_7

一,步骤参照参考文献

二、新建的项目

三、补充

web.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
 5     http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
 6
 7     <display-name>activemq</display-name>
 8
 9     <!-- Spring ApplicationContext配置文件的路径,可使用通配符,用于后面的Spring Context Loader -->
10     <context-param>
11         <param-name>contextConfigLocation</param-name>
12         <param-value>
13             classpath:applicationContext.xml
14         </param-value>
15     </context-param>
16
17     <!--Spring ApplicationContext 载入 -->
18     <listener>
19         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
20     </listener>
21
22     <!-- Spring MVC Servlet -->
23     <servlet>
24         <servlet-name>dispatcher</servlet-name>
25         <servlet-class>com.alibaba.dubbo.remoting.http.servlet.DispatcherServlet</servlet-class>
26         <init-param>
27             <param-name>contextConfigLocation</param-name>
28             <param-value>classpath:DispatcherServlet.xml</param-value>
29         </init-param>
30         <load-on-startup>1</load-on-startup>
31     </servlet>
32     <servlet-mapping>
33         <servlet-name>dispatcher</servlet-name>
34         <url-pattern>/</url-pattern>
35     </servlet-mapping>
36
37
38     <welcome-file-list>
39         <welcome-file>index.html</welcome-file>
40     </welcome-file-list>
41 </web-app>

applicationContext.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans
 3         xmlns="http://www.springframework.org/schema/beans"
 4         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 5         xmlns:context="http://www.springframework.org/schema/context"
 6         xmlns:goldfish="http://www.fangdd.com/schema/goldfish"
 7         xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
 8           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
 9           http://www.fangdd.com/schema/goldfish http://www.fangdd.com/schema/goldfish/goldfish-1.0.0.xsd">
10
11       <context:annotation-config/>
12
13     <context:component-scan base-package="com.zp.test" >
14     </context:component-scan>
15
16
17     <!-- 使用annotation 自动注册bean,并保证@Required,@Autowired的属性被注入 -->
18     <context:component-scan base-package="com.activemqtest.*"/>
19
20     <!-- 配置JMS连接工厂 -->
21     <bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
22         <property name="brokerURL" value="failover:(tcp://localhost:61616)" />
23     </bean>
24
25     <!-- 定义消息队列(Queue) -->
26     <bean id="queueDestination" class="org.apache.activemq.command.ActiveMQQueue">
27         <!-- 设置消息队列的名字 -->
28         <constructor-arg>
29             <value>queue1</value>
30         </constructor-arg>
31     </bean>
32
33     <!-- 配置JMS模板(Queue),Spring提供的JMS工具类,它发送、接收消息。 -->
34     <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
35         <property name="connectionFactory" ref="connectionFactory" />
36         <property name="defaultDestination" ref="queueDestination" />
37         <property name="receiveTimeout" value="10000" />
38     </bean>
39
40     <!--queue消息生产者 -->
41     <bean id="producerService" class="com.activemqtest.serviceImpl.ProducerServiceImpl">
42         <property name="jmsTemplate" ref="jmsTemplate"></property>
43     </bean>
44
45     <!--queue消息消费者 -->
46     <bean id="consumerService" class="com.activemqtest.serviceImpl.ConsumerServiceImpl">
47         <property name="jmsTemplate" ref="jmsTemplate"></property>
48     </bean>
49
50     <!-- 定义消息队列(Queue),我们监听一个新的队列,queue2 -->
51     <bean id="queueDestination2" class="org.apache.activemq.command.ActiveMQQueue">
52         <!-- 设置消息队列的名字 -->
53         <constructor-arg>
54             <value>queue2</value>
55         </constructor-arg>
56     </bean>
57
58     <!-- 配置消息队列监听者(Queue),代码下面给出,只有一个onMessage方法 -->
59     <bean id="queueMessageListener" class="com.activemqtest.serviceImpl.QueueMessageListener" />
60
61     <!-- 消息监听容器(Queue),配置连接工厂,监听的队列是queue2,监听器是上面定义的监听器 -->
62     <bean id="jmsContainer"
63         class="org.springframework.jms.listener.DefaultMessageListenerContainer">
64         <property name="connectionFactory" ref="connectionFactory" />
65         <property name="destination" ref="queueDestination2" />
66         <property name="messageListener" ref="queueMessageListener" />
67     </bean>
68     <!-- 定义消息主题(Topic) -->
69     <bean id="topicDestination" class="org.apache.activemq.command.ActiveMQTopic">
70         <constructor-arg>
71             <value>JY_topic</value>
72         </constructor-arg>
73     </bean>
74     <!-- 配置JMS模板(Topic),pubSubDomain="true"-->
75     <bean id="topicJmsTemplate" class="org.springframework.jms.core.JmsTemplate">
76         <property name="connectionFactory" ref="connectionFactory" />
77         <property name="defaultDestination" ref="topicDestination" />
78         <property name="pubSubDomain" value="true" />
79         <property name="receiveTimeout" value="10000" />
80     </bean>
81     <!--topic消息发布者 -->
82     <bean id="topicProvider" class="com.activemqtest.serviceImpl.TopicProvider">
83         <property name="topicJmsTemplate" ref="topicJmsTemplate"></property>
84     </bean>
85     <!-- 消息主题监听者 和 主题监听容器 可以配置多个,即多个订阅者 -->
86     <!-- 消息主题监听者(Topic) -->
87     <bean id="topicMessageListener" class="com.activemqtest.serviceImpl.TopicMessageListener" />
88     <!-- 主题监听容器 (Topic) -->
89     <bean id="topicJmsContainer"
90         class="org.springframework.jms.listener.DefaultMessageListenerContainer">
91         <property name="connectionFactory" ref="connectionFactory" />
92         <property name="destination" ref="topicDestination" />
93         <property name="messageListener" ref="topicMessageListener" />
94     </bean>
95
96     </beans>

DispactcherServlet.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4        xmlns:context="http://www.springframework.org/schema/context"
 5        xmlns:mvc="http://www.springframework.org/schema/mvc"
 6        xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
 7         http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
 8         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
 9
10     <context:annotation-config />
11     <context:component-scan base-package="com.zp.test.controller">
12         <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
13     </context:component-scan>
14  </beans>

四、运行结果

因为运行了两遍,所以是双数

五、遇到的问题

问题:Java.lang.IllegalStateException: Failed to load ApplicationContext

原因:因为applicationContext里的包没有与实际的包对应,或者是没有注解导入对应的变量

时间: 2024-11-08 21:50:02

ActiveMQ实例2--Spring JMS发送消息的相关文章

Spring AMQP 发送消息到 RabbitMQ 收到 x-queue-type 错误

在使用 Spring AMQP 发送消息到 RabbitMQ 的时候收到错误信息: inequivalent arg 'x-queue-type' for queue 'com.ossez.real.estate' in vhost '/': received none but current is the value 'classic' of type 'longstr', class-id=50, method-id=10 上面的错误信息已经很明显了,说明的是发送消息的队列参数中少了 x-q

ActiveMQ实例1--简单的发送和接收消息

一.环境准备 1,官网http://activemq.apache.org/下载最新版本的ActiveMQ,并解压 2,打开对应的目录,在Mac环境下,一般可以运行命令: cd /Users/***/Downloads/apache-activemq-***/bin/macosx ./activemq start 3,启动成功后,登录http://localhose:8161/admin/,登陆账号和密码都为admin,创建一个queue名为jyQueue. 二.创建Eclipse项目 1,新建

ActiveMQ学习笔记(五)——使用Spring JMS收发消息

ActiveMQ学习笔记(四)http://my.oschina.net/xiaoxishan/blog/380446 中记录了如何使用原生的方式从ActiveMQ中收发消息.可以看出,每次收发消息都要写许多重复的代码,Spring 为我们提供了更为方便的方式,这就是Spring JMS.我们通过一个例子展开讲述.包括队列.主题消息的收发相关的Spring配置.代码.测试. 本例中,消息的收发都写在了一个工程里. 1.使用maven管理依赖包 <dependencies> <depend

Spring-boot JMS 发送消息慢的问题解决

1:在<ActiveMQ 基于zookeeper的主从(levelDB Master/Slave)搭建以及Spring-boot下使用>(http://www.cnblogs.com/yshyee/p/7277801.html)中,采用以下代码进行JMS消息发送: @Service public class Producer { @Autowired private JmsMessagingTemplate jmsTemplate; public void sendMessage(Destin

ActiveMQ学习笔记(六)——JMS消息类型

1.前言 ActiveMQ学习笔记(四)--通过ActiveMQ收发消息http://my.oschina.net/xiaoxishan/blog/380446 和ActiveMQ学习笔记(五)--使用Spring JMS收发消息http://my.oschina.net/xiaoxishan/blog/381209   中,发送和接受的消息类型都是TextMessage,即文本消息(如下面的代码所示).显然消息类型只有文本类型是不能满足要求的. //发送文本消息  session.create

使用Spring JMS轻松实现异步消息传递

异步进程通信是面向服务架构(SOA)一个重要的组成部分,因为企业里很多系统通信,特别是与外部组织间的通信,实质上都是异步的.Java消息服务(JMS)是用于编写使用异步消息传递的JEE应用程序的API.传统的使用JMS API进行消息传递的实现包括多个步骤,例如JNDI查询队列连接工厂和Queue资源,在实际发送和接收消息前创建一个JMS会话. Spring框架则简化了使用JEE组件(包括JMS)的任务.它提供的模板机制隐藏了典型的JMS实现的细节,这样开发人员可以集中精力放在处理消息的实际工作

消费者端的Spring JMS 连接ActiveMQ接收生产者Oozie Server发送的Oozie作业执行结果

一,介绍 Oozie是一个Hadoop工作流服务器,接收Client提交的作业(MapReduce作业)请求,并把该作业提交给MapReduce执行.同时,Oozie还可以实现消息通知功能,只要配置好消息服务器,Oozie Server就可以把作业的执行结果发送到消息服务器上,而Client只需要订阅其感兴趣的消息即可.具体的配置参考这篇文章:Oozie 使用ActiveMQ实现 JMS通知 由于Spring内置了JMS相关的服务,因此这里记录在Spring中如何配置消费者连接ActiveMQ,

Spring + JMS + ActiveMQ实现简单的消息队列(监听器异步实现)

首先声明:以下内容均是在网上找别人的博客综合学习而成的,可能会发现某些代码与其他博主的相同,由于参考的文章比较多,这里对你们表示感谢,就不一一列举,如果有侵权的地方,请通知我,我可以把该文章删除. 1.jms-xml Spring配置文件 [html] view plain copy print? <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springf

04.ActiveMQ与Spring JMS整合

SpringJMS使用参考:http://docs.spring.io/spring/docs/current/spring-framework-reference/html/jms.html 1.SpringJMS核心接口介绍 1.JmsTemplate JmsTemplate: 是Spring自身提供,只需向Spring容器内注册这个类即可,就可以使用JmsTemplate类对象方便的操作JMS,下面介绍他常用的方法. 注意:JmsTemplate类是线程安全的,可以在整个应用范围使用.但并