SSM+activemq结合

3人阅读 评论(0) 收藏 举报
分类:

SSM搭建很简单,就不说了。

直接添加activemq

在pom里添加依赖

<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jms</artifactId>
			<version>4.3.9.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>javax.jms</groupId>
			<artifactId>jms</artifactId>
			<version>1.1</version>
		</dependency>
		<dependency>
			<groupId>org.apache.activemq</groupId>
			<artifactId>activemq-all</artifactId>
			<version>5.9.0</version>
		</dependency>
		<dependency>
			<groupId>org.apache.xbean</groupId>
			<artifactId>xbean-spring</artifactId>
			<version>3.16</version>
		</dependency>

新建active.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:amq="http://activemq.apache.org/schema/core"
    xmlns:jms="http://www.springframework.org/schema/jms"
    xsi:schemaLocation="http://www.springframework.org/schema/beans   
        http://www.springframework.org/schema/beans/spring-beans-4.1.xsd   
        http://www.springframework.org/schema/context   
        http://www.springframework.org/schema/context/spring-context-4.1.xsd
        http://www.springframework.org/schema/jms
        http://www.springframework.org/schema/jms/spring-jms-4.1.xsd
        http://activemq.apache.org/schema/core
        http://activemq.apache.org/schema/core/activemq-core-5.9.0.xsd">
 	
 	<!-- ActiveMQ 连接工厂 -->
    <!-- 真正可以产生Connection的ConnectionFactory,由对应的 JMS服务厂商提供-->
    <amq:connectionFactory id="amqConnectionFactoryBOSS" brokerURL="tcp://xxx.xxx.xxx.xxx:61616" userName="" password="" />
    
    <!-- Spring Caching连接工厂 -->
    <!-- Spring用于管理真正的ConnectionFactory的ConnectionFactory --> 
    <bean id="connectionFactoryBoss" class="org.springframework.jms.connection.CachingConnectionFactory">
        <constructor-arg ref="amqConnectionFactoryBOSS" />
         <!-- Session缓存数量 -->
        <property name="sessionCacheSize" value="100" />
    </bean>
    
    <!-- ======== queue size config start ======== -->
    <amq:systemUsage sendFailIfNoSpaceAfterTimeout="3000" sendFailIfNoSpace="true">
	    <amq:memoryUsage>
	    	<amq:memoryUsage limit="20 mb" ></amq:memoryUsage>
	    </amq:memoryUsage> 
	    <amq:storeUsage>
	    	<amq:storeUsage limit="200 mb"></amq:storeUsage>
	    </amq:storeUsage>
	    <amq:tempUsage>
	    	<amq:tempUsage limit="100 mb"></amq:tempUsage>
	    </amq:tempUsage>
    </amq:systemUsage>
     
    
    <bean id="jmsQueueTemplateBoss" class="org.springframework.jms.core.JmsTemplate">
        <constructor-arg ref="connectionFactoryBoss" />
        <property name="pubSubDomain" value="false" />
    </bean>
    
    <!-- ======== 监听status======== -->
    <jms:listener-container destination-type="queue" container-type="default" connection-factory="connectionFactoryBoss" acknowledge="auto">
        <jms:listener destination="status" ref="queueReceiverCardStatus"/>
    </jms:listener-container>
    <!-- ======== Consumer side end ======== -->
 
</beans>

新建 QueueSenderBoss.java

package com.pwl.cash;

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

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;
import org.springframework.stereotype.Component;

@Component
public class QueueSenderBoss {
	
	@Autowired
	@Qualifier("jmsQueueTemplateBoss")
	private JmsTemplate jmsTemplate;
	
	public void send(String queueName, final String message) {
		jmsTemplate.send(queueName, new MessageCreator() {
			@Override
			public Message createMessage(Session session) throws JMSException {
				return session.createTextMessage(message);
			}
		});
	}
	
}

新建

QueueReceiverCardStatus.java
package com.pwl.cash;


import javax.annotation.Resource;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
import org.springframework.stereotype.Component;
import com.alibaba.fastjson.JSONObject;

@Component
public class QueueReceiverCardStatus implements MessageListener {
	
	
	@Override
	public void onMessage(Message message) {
		try {
			String reqJsonStr = ((TextMessage)message).getText();
			System.out.println(reqJsonStr);
		}catch (JMSException e) {
			e.printStackTrace();
		} 
	}
	
}

测试

package com.pwl.test;

import javax.annotation.Resource;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import com.pwl.cash.QueueSenderBoss;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

@RunWith(SpringJUnit4ClassRunner.class) //使用junit4进行测试  
@ContextConfiguration(locations={"classpath:spring-servlet.xml","classpath:spring-redis.xml","classpath:active.xml"}) //加载配置文件
public class TestRedis {
	@Resource
	private QueueSenderBoss queueSenderBoss;
	
	@Test
	public void ttt() {
		queueSenderBoss.send("status","stop");
	}
}

结果


查看评论

activeMQ 在ssm中的使用-版本 5.14.4

一jar依赖:                             org.eclipse.jetty             jetty-continuation     ...
  • qq_32423845
  • qq_32423845
  • 2017-08-07 16:02:42
  • 473

Apache ActiveMQ 持久化到MySQL数据库

1.  前言 ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMSProvider实现,尽管J...
  • jinshiyill
  • jinshiyill
  • 2016-07-07 16:41:02
  • 256

编译原理中运算符的左结合和右结合

文法1:term-> term+factor             |factor 文法2:term->factor+term |factor 文法1中‘+’是左结合的,文法...
  • barebear007
  • barebear007
  • 2017-10-30 16:03:51
  • 677

c语言中的左结合右结合

a 但是=是右结合的,如果一个表达式中出现多个=号,不是从左到右计算而是从右到左计算,例如 total=total_minute=hour*60+minute,计算的顺序是先算hour*60+min...
  • u010141928
  • u010141928
  • 2017-04-19 11:49:50
  • 1607

关于软硬结合

朋友办培训班,在软硬结合方面想有所作为。我是非常赞成的。软硬结合,从多个方面说,对技术人员的提升都是巨大的。1.带来更多的乐趣和成就感。做技术的人,之所以能做下能板凳,可能很重要一个原因,就是目标完成...
  • coolbacon
  • coolbacon
  • 2015-08-17 11:57:50
  • 3118

CSS 概述&与html结合四种方式

CSS 是层叠样式表(Cascading Style Sheets)用来定义网页的显示效果。可以解决 html 代码对样式定义的重复,提高了后期样式代码的可维护性,并增强了网页的显示效果功能,简单一句...
  • ShunXiangL
  • ShunXiangL
  • 2016-10-22 15:30:03
  • 797

Spark与Hadoop的结合

Spark可以直接对HDFS进行数据的读写,同样支持Spark on YARN。Spark可以与MapReduce运行于同集群中,共享存储资源与计算,数据仓库Shark实现上借用Hive,几乎与Hiv...
  • Joe_study
  • Joe_study
  • 2014-09-29 10:57:04
  • 2002

策略模式及与简单工厂模式的结合

策略模式: 1.策略模式动机:完成一项任务有多种不同的方式,每一种方式称为一种策略,我们可以根据环境或者条件的不同选择不同的策略来完成该项任务。 在软件开发中常常遇到这种情况:实现某一功能有多种途...
  • ustcqi
  • ustcqi
  • 2012-12-19 15:03:37
  • 2394

python与shell的完美结合

有时候在python中使用一些shell的功能,其实是非常有必要的。以前自己只知道os.path/stat/glob/shutil等模块,今天发现还有一个模块:commands,用起来非常方面。举例如...
  • jjwspj
  • jjwspj
  • 2012-08-22 12:33:28
  • 672

单体测试与结合测试区别

单体测试(白盒测试)阶段,不但要保证,程序能跑到和跑通所有对应本机能的开发的代码,同时也必须保证代码的质量(机上レビュー),是否符合规约,是否已经是最好,这个非常重要。遇到bug,及时进行确认和相关开...
  • fengluorenjian
  • fengluorenjian
  • 2017-05-25 09:58:24
  • 908
    个人资料
    持之以恒
    等级:
    访问量: 0
    积分: 492
    排名: 0
    文章存档