maven搭建ssm分模块框架+activeMQ (myeclipse版) (四)

7 篇文章 0 订阅
6 篇文章 0 订阅

隔了好几天,才继续更新,拖延症又犯了
今天是整合在ssmDemo框架中整合进MQ
可以参考一下这个地址http://blog.csdn.net/wilsonke/article/details/42776057
MQ分为3种方式:
1、publish-subscribe发布订阅通过topic,一对多的方式
2、P2P,使用消息队列queue,一对一的方式
3、request-response,请求-应答方式并不是JMS规范系统默认提供的一种通信方式,而是通过在现有通信方式的基础上稍微运用一点技巧实现的

我这边的Demo使用的是第二种方式,消息队列queue的方式
当然我们也需要先下载一个activeMQ,让它可以在本地跑起来。
http://activemq.apache.org/download-archives.html
我这里使用的是5.9.0的版本
跟zookeeper一样,解压后在bin目录下启动activemq.bat就可以了
启动之后,可以访问localhost:8161/admin,帐号密码可以在conf文件夹下的users.properties可以查看或是修改密码
接下来还是以分工程的形式来写
首先是ssmDemo父工程的pom.xml

        <!-- active mq start -->
        <dependency>
            <groupId>org.apache.activemq</groupId>
            <artifactId>activemq-core</artifactId>
            <version>5.7.0</version>
        </dependency>
                <dependency>
            <groupId>org.apache.activemq</groupId>
            <artifactId>activemq-pool</artifactId>
            <version>5.9.0</version>
        </dependency>
        <!-- active mq end -->

我这里没有使用activemq-all,因为我发现它的jar包里面和slf4j-log4j12一直冲突,我即使是将activemq-all排除掉了slf4j的jar也还是报错,出于下下策,我就换成了core 另外使用core的话 还需要spring-jms 这个在前面已经添加上去了

接着就是
ssmDemo-web层 添加一个spring-jms.xml文件

<?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-3.1.xsd  
         http://www.springframework.org/schema/context  
         http://www.springframework.org/schema/context/spring-context-3.1.xsd">
     <bean id="connectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory" destroy-method="stop">
         <property name="connectionFactory">
             <bean class="org.apache.activemq.ActiveMQConnectionFactory">
                 <property name="brokerURL">
                     <value>failover:(tcp://localhost:61616)</value>
                 </property>
             </bean>
         </property>
     </bean>
     <!-- 发送消息的目的地(一个队列) -->
     <bean id="userMQ" class="org.apache.activemq.command.ActiveMQQueue">
         <!-- 设置消息队列的名字 -->
         <constructor-arg index="0" value="activeMQQueue" />
     </bean>
     <!-- 配置JMS模版 -->
     <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
         <property name="connectionFactory" ref="connectionFactory" />
         <!-- 如果为True,则是Topic;如果是false或者默认,则是queue -->
         <property name="pubSubDomain" value="false"></property>
     </bean>
  </beans>

原来的spring-mvc.xml文件的扫包范围也要改一下

    <!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器 -->  
    <context:component-scan base-package="cn.com.test" />  

因为我发现直接在controller发MQ消息的时候 报了一个错
Supported message payloads are: String, byte array, Map, Serializa…的错
好像是需要实例化,所以我就把调用MQ发送消息的方法单独写了一个java
MQService.java

@Component
public class MQService {
    @Autowired
    private JmsTemplate jmsTemplate;
    @Autowired
    @Qualifier("userMQ")
    private Destination destination;

    public void sendMQ(final String msg) {
        jmsTemplate.send(destination, new MessageCreator() {
            @Override
            public Message createMessage(Session session) throws JMSException {
                return session.createTextMessage(msg);
            }
        });

    }
}

另外创建了一个MqController.java

@Controller
@RequestMapping("/mq")
public class MqController {

    @Autowired
    private MQService mqService;

    @RequestMapping("/send")
    public String sendMq(){
        System.out.println("发送mq消息");
        final String msg="test";
        mqService.sendMQ(msg);
        return "mqPage";
    }

}

web.xml文件 需要引入spring-jms.xml

        <init-param>  
            <param-name>contextConfigLocation</param-name>  
            <param-value>classpath:spring-mvc.xml,classpath:dubbo-consumer.xml,**classpath:spring-jms.xml**</param-value>  
        </init-param>  

接着就是ssmDemo-servicec层
添加一个spring-jms.xml文件

<?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"
      xmlns:jms="http://www.springframework.org/schema/jms"
     xsi:schemaLocation="http://www.springframework.org/schema/beans  
         http://www.springframework.org/schema/beans/spring-beans-3.1.xsd  
         http://www.springframework.org/schema/context  
         http://www.springframework.org/schema/context/spring-context-3.1.xsd
         http://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms-2.5.xsd">
     <bean id="connectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory" destroy-method="stop">
         <property name="connectionFactory">
             <bean class="org.apache.activemq.ActiveMQConnectionFactory">
                 <property name="brokerURL">
                     <value>failover:(tcp://localhost:61616)</value>
                 </property>
             </bean>
         </property>
     </bean>
    <!-- 配置JMS模版 -->
    <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
        <property name="connectionFactory" ref="connectionFactory" />
    </bean>
    <bean id="receiveMq" class="cn.com.test.mq.MqReceive"></bean>
    <!-- jms:listener-container 的destination-type属性默认值为queue,如果是Topic需要显示指定 -->
<jms:listener-container container-type="default"
    destination-type="queue" connection-factory="connectionFactory"
    acknowledge="auto">
    <jms:listener destination="activeMQQueue" ref="receiveMq"
        method="onMessage" />
</jms:listener-container>
</beans>

创建了一个MqReceive.java文件

public class MqReceive {
    public void onMessage(String msg){
        System.out.println("接收到mq的消息");
            System.out.println("消息为"+msg);
    }
}

最后就是TestMain.java文件

public class TestMain {

    public static void main(String[] args){
//      String[] xmls=new String[]{"classpath:spring-mybatis.xml","classpath:dubbo-provider.xml"};
        String[] xmls=new String[]{"classpath:spring-mybatis.xml","classpath:spring-jms.xml"};
        ClassPathXmlApplicationContext context=new ClassPathXmlApplicationContext(xmls);
          context.start();
            try {
                System.in.read();
            } catch (IOException e) {
                e.printStackTrace();
            } // 按任意键退出
    }
}

测试是否成功的话,就是先启动activeMq文件bin目录下的activemq.bat
然后将web层跑起来,TestMain方法也run as起来
页面访问localhost:8080/mq/send
最后就是看后台的日志有没有打印出system.out.println输入的值
也可以查看Localhost:8161/admin里面的queue 看有没有消息队列

我的代码也是通过查找网上的资料 然后自己整合起来的

代码地址:
http://download.csdn.net/detail/i_popular/9534767
该代码里面也包含了dubbo,只是在TestMain里面我没有添加dubbo-provider.xml的读取
当然要把dubbo和mq都一起使用的话,需要zookeeper和mq都启动起来的

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、简介 通过这个课程带大家从零开发一款功能全面的后台管理系统,包括项目搭建、功能实现到最后的Linux系统部署全过程。本课程使用SpringMVC + Spring + Mybatis作为主体框架,使用AdminLTE作为前端框架,使用主流关系型数据库Mysql作为存储数据库,使用非关系型数据库Redis作为缓存数据库,并集成SpringSecuriy安全框架做权限的动态管理,集成Swagger2自动生成接口文档,集成Druid连接池进行SQL性能监控,集成ActiveMQ消息中间件进行异步解耦,提高性能。最后使用linux系统进行服务部署,并搭建nginx反向代理服务器提高网站性能。 二、学习目标 通过本课程的学习带大家掌握SSM框架的开发流程,并熟练使用SpringSecurity做为安全框架进行权限管理,整合相关优秀的开源框架进行功能开发。还在项目中带大家学习前端相关的Jquery、Bootstrap等知识。课程结束之后希望大家能做到独立进行开发项目的目的,增强解决问题的能力,具备功能落地实现的能力。 三、课程涉及知识点 SpringMVC源码析Mybatis源码析通用MapperMysql数据库Redis缓存实现ActiveMQ消息中间件SpringSecurity鉴权Swagger2接口文档生成自定义注解AOP切面编程自定义过滤器Logback日志整合Druid性能监控Linux系统Nginx反向代理Ajax异步请求技术Jquery基本使用AdminLTE前端框架Chart图表-线状图和饼状图百度地图定位城市BootStrap前端框架BootStrap-Table插件BootStrap-Treeview插件Markdown编辑器403、404、500错误页面配置数据库事务消息提示插件toastr.js图片上传插件bootstrap fileinput数字滚动效果pv/uv流量统计...、课程部内容截图如下 1、首页 2、菜单管理 3、图床管理 4、图标管理 5、留言反馈管理 6、druid监控 7、登录日志
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值