---恢复内容开始---

一、 导入依赖
<dependencies>
<!-- ActiveMQ客户端完整jar包依赖 -->
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-all</artifactId>
<version>5.9.0</version>
</dependency>
<!-- ActiveMQ和Spring整合配置文件标签处理jar包依赖 -->
<dependency>
<groupId>org.apache.xbean</groupId>
<artifactId>xbean-spring</artifactId>
<version>4.5</version>
</dependency>
<!-- Spring-JMS插件相关jar包依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
<version>4.1.6.RELEASE</version>
</dependency>
<!-- Spring框架上下文jar包依赖 --> 严重怀疑这个不用
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.1.6.RELEASE</version>
</dependency>
<!-- SpringMVC插件jar包依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.1.6.RELEASE</version>
</dependency>
</dependencies>
<build>
<plugins>
<!-- 配置Tomcat插件 --> 这个可以不用
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>9099</port>
<path>/</path>
</configuration>
</plugin>
</plugins>
</build>
 
二、 定义pojo  Order.class
package cn.gzsxt.jms.pojo;

import java.io.Serializable;
import java.util.Date; /**
* 定义消息载体类型. 即要在ActiveMQ中传递的数据实体类型.
* 消息载体对象必须实现接口java.io.Serializable, 因为消息需要在网络中传递,要求必须可序列化
*
* @author lyq public class Order implements Serializable{
选第二个
private static final long serialVersionUID = 4631909346042146827L; private String id;
private String nick;
private Long price;
private Date createTime;
public Order() {
super();
// TODO Auto-generated constructor stub
}
get set 方法
@Override
public String toString() {
return "Order [id=" + id + ", nick=" + nick + ", price=" + price + ", createTime=" + createTime + "]";
}
}
 
 
三、 定义消费者 OrderReciever.java
/**
* 消息消费者代码, 此类型实现接口MessageListener, 用于监听处理ActiveMQ服务中的消息
*
* @author lyq
*/
@Component
public class OrderReciever implements MessageListener{
@Override 实现的方法
public void onMessage(Message message) {
try{
ObjectMessage objectMassage = (ObjectMessage) message;
Order order = (Order) objectMassage.getObject();
/**
* 模拟将订单写入数据库
*/
System.out.println("the order is : " + order);
}catch(Exception e){
e.printStackTrace();
}
}
}
 
 
四 、定义生产者OrderProducer.java
@Component
public class OrderProducer { @Autowired //Autowired是根据类型注入值。
private JmsTemplate jmsTemplate; jms处理实现类通过这个类可以发送数据到队列里 @Value("${MQ_QUEUE}")
private String MQ_QUEUE; public void sendToMQ(final Order order){ 匿名内部类要访问外部变量需要final
jmsTemplate.send(MQ_QUEUE, new MessageCreator() { @Override
public Message createMessage(Session session) throws JMSException { Message message = session.createObjectMessage(order); return message;
}
});
}
}
等同于
 
              //4. 创建目的地, 目的地命名即队列命名, 消息消费者需要通过此命名访问对应的队列
                destination  =  session.createQueue("text-msg");
                // 5. 创建消息生成者, 创建的消息生成者与某目的地对应, 即方法参数目的地.
                producer = session.createProducer(destination);
                //6 .创建消息对象 创建一个文本消息, 此消息对象中保存要传递的文本数据.
                message = session.createTextMessage(msg);        //createTextMessage  因为是文本信息
                //7.将消息对象发送到队列
                producer.send(message);
 
五 、 定义Controller
@Controller
@RequestMapping("/order")
public class OrderController { @Autowired
private OrderProducer orderProducer; @RequestMapping(value="/save.do",method=RequestMethod.POST)
public String save(Order order){ orderProducer.sendToMQ(order); return "/success.jsp";
}
}

 
 
六  、 Spring整合Mq
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context" xmlns:amq(core)="http://activemq.apache.org/schema/core"
xmlns:jms ="http://www.springframework.org/schema/jms" <!-- ActiveMQ 真实连接工厂 -->
<!-- 真正可以产生Connection的ConnectionFactory,由对应的 JMS服务厂商提供 -->
<!-- 需提供访问路径tcp://ip:61616;以及用户名,密码 -->
<amq:connectionFactory id="amqConnectionFactory"
brokerURL="tcp://192.168.56.4:61616" userName="admin" password="admin" /> <!-- Spring Caching连接工厂 -->
<!-- Spring用于管理真正的ConnectionFactory的ConnectionFactory -->
<bean id="connectionFactory"
class="org.springframework.jms.connection.CachingConnectionFactory"> <!-- 对应真实的可以产生JMS Connection的ConnectionFactory -->
<property name="targetConnectionFactory" ref="amqConnectionFactory"></property>
<!-- 可以设置Session缓存数量 -->
<property name="sessionCacheSize" value="100" />
</bean> <!-- 消息生产者模板对象的生成 --> <!-- 定义JmsTemplate对象. 此类型由Spring框架JMS组件提供. 用于访问ActiveMQ使用. -->
<bean id="jmsQueueTemplate" class="org.springframework.jms.core.JmsTemplate"> <!--这里对应的是我们定义的Spring提供的那个ConnectionFactory对象 -->
他需要提供一个连接工厂给对象,才知道那个连接
<constructor-arg ref="connectionFactory" />
<!-- 非pub/sub模型(发布/订阅),即队列模式, 默认数据可省略配置 -->
<!-- <property name="pubSubDomain" value="false" /> -->
</bean> <!-- 定义生成者对象 -->
<bean id="orderProducer" class="cn.gzsxt.jms.producer.OrderProducer">
<!-- 为属性赋值 -->
<property name="template" ref="jmsQueueTemplate"></property>
</bean> <!--消息生产者 end --> <!-- 消息消费者 start --> <!-- 定义消息监听器, 此组件为spring-jms组件定义. 可以一次注册若干消息监听器.
属性解释:
1. destination-type - 目的地类型, queue代表消息队列
可选值: queue | topic | durableTopic
queue - 默认值. 代表消息队列
topic - 代表消息队列集合
durableTopic - 持久化的消息队列集合. ActiveMQ会保证消息的消费者一定接收到此消息.
2. container-type - 容器类型
可选值: default | simple
default - 默认值. 默认容器类型, 对应DefaultMessageListenerContainer
simple - 简单容器类型, 对应SimpleMessageListenerContainer
3. connection-factory - 链接工厂, 注入的是Spring-JMS组件提供的链接工厂对象.
acknowledge - 确认方式
| transacted
auto - 默 可选值: auto | client | dups-ok认值, 即自动确认消息
client - 客户端确认消息
dups-ok - 可使用副本的客户端确认消息
transacted - 有事务的持久化消息确认机制. 需开启对ActiveMQ的事务控制才可应用.
-->
1 . 声明在队列中取消息
<jms:listener-container destination-type="queue"
container-type="default" connection-factory="connectionFactory"
acknowledge="auto">
<!-- 注册消息监听器. 如果需要注册多个, 重复定义下述标签. -->
(需要监听的目的地)
<jms:listener destination="test-spring" ref="orderReciver" />
</jms:listener-container> <!-- 容器管理消息监听器实现类对象 -->
<bean id="orderReciver" class="cn.gzsxt.jms.consumer.OrderReciever"/> <!-- 消息消费者 end -->
</beans>
 
 
七 、 配置SpringMVC
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans <context:component-scan base-package="cn.gzsxt.controller" />
<mvc:annotation-driven /> </beans>
 
 
 
八 、 配置web.xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans <context:component-scan base-package="cn.gzsxt.controller" />
<mvc:annotation-driven /> </beans>
 
九 、 jsp页面

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans <context:component-scan base-package="cn.gzsxt.controller" />
<mvc:annotation-driven /> </beans>

spring整合MQ的更多相关文章

  1. JMS 之 Active MQ 的spring整合

    一.与spring整合实现ptp的同步接收消息 pom.xml: <!-- https://mvnrepository.com/artifact/org.springframework/spri ...

  2. springboot整合mq接收消息队列

    继上篇springboot整合mq发送消息队列 本篇主要在上篇基础上进行activiemq消息队列的接收springboot整合mq发送消息队列 第一步:新建marven项目,配置pom文件 < ...

  3. Spring整合ActiveMQ及多个Queue消息监听的配置

        消息队列(MQ)越来越火,在java开发的项目也属于比较常见的技术,MQ的相关使用也成java开发人员必备的技能.笔者公司采用的MQ是ActiveMQ,且消息都是用的点对点的模式.本文记录了实 ...

  4. spring整合ActiveMq

    spring整合ActiveMq: 1:依赖的jar包: 2:spring-activemq.xml    的配置: 代码: <?xml version="1.0" enco ...

  5. spring整合redis之hello

    1.pom.xml文件 <dependencies> <!-- spring核心包 --> <dependency> <groupId>org.spri ...

  6. spring整合mongodb

    使用spring整合mongodb maven 依赖 <dependency> <groupId>org.mongodb</groupId> <artifac ...

  7. 消息中间件ActiveMQ及Spring整合JMS

    一 .消息中间件的基本介绍 1.1 消息中间件 1.1.1 什么是消息中间件 消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成.通过提供消息传递和消息排 ...

  8. RabbitMQ的介绍与spring整合

    本文主要讲述的是个人参考官网及其他前辈博客,对RabbitMQ的一些理解与spring整个RabbitMQ. 一.RabbitMQ的介绍 1.1.什么是RabbitMQ RabbitMQ是一个由erl ...

  9. ActiveMQ学习总结------Spring整合ActiveMQ 04

    通过前几篇的学习,相信大家已经对我们的ActiveMQ的原生操作已经有了个深刻的概念, 那么这篇文章就来带领大家一步一步学习下ActiveMQ结合Spring的实战操作 注:本文将省略一部分与Acti ...

随机推荐

  1. Mono Features of cheat engine

    If you attach to a process/game that uses mono, you should see a new "Mono" menu item on t ...

  2. 【转】Python 深入浅出 - PyPDF2 处理 PDF 文件

    实际应用中,可能会涉及处理 pdf 文件,PyPDF2 就是这样一个库,使用它可以轻松的处理 pdf 文件,它提供了读,割,合并,文件转换等多种操作. 文档地址:http://pythonhosted ...

  3. Unity编辑器环境在Inspector面板中显示变量

    Serialize功能Unity3D 中提供了非常方便的功能可以帮助用户将 成员变量 在Inspector中显示,并且定义Serialize关系. 简单的说,在没有自定义Inspector的情况下所有 ...

  4. java类型 jdbcType类型 mysql类型关系

    java类型 jdbcType类型 mysql类型关系 Java类型 JdbcType Mysql类型 备注 String VARCHAR VARCHAR 变长字符串 String LONGVARCH ...

  5. mysql 安装参考

    https://blog.csdn.net/qq_38756992/article/details/84929787 https://www.cnblogs.com/joyny/p/10991194. ...

  6. Python3基础 九九乘法表

             Python : 3.7.3          OS : Ubuntu 18.04.2 LTS         IDE : pycharm-community-2019.1.3    ...

  7. Spring cloud微服务安全实战-4-3常见的微服务安全整体架构

    整体架构 这个图适合中小公司.麻雀虽小 五脏俱全.微服务架构所需要做的事在这个图里基本都有了. 绿色的不讲,主要讲的是这三块(橘黄色的).后面的和运维相关,会讲,不会讲的太深 订单服务 首先来写一个订 ...

  8. ES6深入浅出-6 ES 6 模块-1.模块化速学

    把模块先默认认为是豆腐块 为什么前端需要模块? 没有模块的方式 预览这个html页面     一共200行js代码 前100行在做一件事 ,另外100行在做另一件事,这样就是两个模块 main.js来 ...

  9. 软件定义网络基础---NETCONF协议

    netconf协议最早被作为网管协议被提出来的,与SNMP网管协议相比较:SNMP的优势在于网络设备的监测,在大规模网管应用中有很大不足,正是针对这种不足之处,提出了NETCONF协议 一:NETCO ...

  10. Linux记录-批量更改当前目录的文件后缀名

    #!/bin/bash path=. for file in $(ls $path) do if [ -f $file ] then filename=${file%.*} bak=${file#*. ...