spring+springMvc+activeMq+maven+mybaits(基于全注解)

这篇做一个综合的activeMq

只列出关键代码

框架用的(maven)springMvc+spring+mybaits(这套框架可以直接拿来整合使用)

spring activeMq 配置

   <!-- ActiveMQ 连接工厂 -->  
    	<!-- 真正可以产生Connection的ConnectionFactory,由对应的 JMS服务厂商提供-->  
   	 	<!-- 如果连接网络:tcp://ip:61616;未连接网络:tcp://localhost:61616 以及用户名,密码-->  
    	<amq:connectionFactory id="amqConnectionFactory"  
        	brokerURL="tcp://127.0.0.1:61616" userName="admin" password="admin"  /> 
		
		<!-- spring caching连接工厂 -->
		<!-- spring用于管理真正的Connectionfactory的connectionFactory -->
		<bean id="connectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory">
			<!-- 目标ConnectionFacory对应真实的可以产生JMS Connection的ConnectionFactory -->
			<property name="targetConnectionFactory" ref="amqConnectionFactory"></property>
			<!-- Session缓存数量 -->
			<property name="sessionCacheSize" value="100"></property>
		</bean>
		
		<!-- Spring JmsTemplate的消息生产者 start -->
		
		<!-- 定义JmsTemplate的Queue类型 -->
		<bean id="jmsQueueTemplate" class="org.springframework.jms.core.JmsTemplate">
			<!-- 这个connectionFactory对应的是我们定义的spring提供的那个ConnectionFactory对象 -->
			<constructor-arg ref="connectionFactory"></constructor-arg>
			<!-- 非pub/sub模型(发布/订阅),即队列模式 -->  
			<property name="pubSubDomain" value="false"></property>
		</bean>
		
		<!-- 定义JmsTemplate的Topic类型 -->
		<bean id="jmsTopicTemplate" class="org.springframework.jms.core.JmsTemplate">
			<constructor-arg ref="connectionFactory"></constructor-arg>
			<!-- pub/sub模型(发布/订阅) -->
			<property name="pubSubDomain" value="true"></property>
		</bean>
		
		<!-- Spring JmsTemplate 的消息生产者end-->
		
		<!-- 消息消费者 start -->
		
		<!-- 定义Queue监听器 -->
		<jms:listener-container destination-type="queue" container-type="default" connection-factory="connectionFactory" acknowledge="auto">
			<jms:listener destination="test.queue" ref="queueReceiver1"></jms:listener>
			<jms:listener destination="test.queue" ref="queueReceiver1"></jms:listener>
		</jms:listener-container>
		
		<!-- 定义Topic监听器 -->
		<jms:listener-container destination-type="topic" container-type="default" connection-factory="connectionFactory" acknowledge="auto">
			<jms:listener destination="test.topic" ref="topicReceiver1"/>  
       		<jms:listener destination="test.topic" ref="topicReceiver2"/>
		</jms:listener-container>
		
		<!-- 消息消费者end -->

java activeMq监听器

我是把消息发送的数据直接插入数据库,进行持久化!没涉及到任何业务!
package com.css.cn.consumer;

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

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.css.cn.dao.ActiveInsertDao;

/**
 * 点对点消息队列监听器
 * @ClassName: QueueReceiver1 
 * @author zyj 
 * @date 2016年11月30日 下午3:17:46 
 * 
 * @version V1.0
 */
@Component
public class QueueReceiver1 implements MessageListener{
	
	@Autowired
	private ActiveInsertDao activeInsert;

	@Override
	public void onMessage(Message message) {
		// TODO Auto-generated method stub
		try {
			String text = ((TextMessage) message).getText();
			System.out.println("点对点QueueReceiver1监听器"+text);
			activeInsert.insertValue(text);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	
}

java activeMq消息发送

package com.css.cn.sender;

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;

/**
 * 消息生产者
 * @ClassName: QueueSender1 
 * @author zyj 
 * @date 2016年11月30日 上午11:41:41 
 * 
 * @version V1.0
 */

@Component
public class QueueSender1 {
	
	// 通过Qualifier来注入对应的Bean 
	@Autowired
	@Qualifier("jmsQueueTemplate")
	private JmsTemplate jmsTemplate;
	
	/**
	 *  发送消息到指定的队列(目标) 
	 * @Title: send 
	 * @param queueName 队列名称 
	 * @param message 消息内容
	 * @return void
	 * @author zyj
	 * @date 2016年11月30日 上午11:57:43 
	 * @throws
	 */
	public void send(String queueName,String message){
		jmsTemplate.send(queueName, new MessageComm(message));
		
	}
	
}


java 消息公共类

package com.css.cn.sender;

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

import org.springframework.jms.core.MessageCreator;

public class MessageComm implements MessageCreator {
	
	private String message;
	public MessageComm(String message){
		this.message = message;
	}

	@Override
	public Message createMessage(Session session) throws JMSException {
		// TODO Auto-generated method stub
		TextMessage messages = session.createTextMessage(message);
		return messages;
	}

}
	

参考文章: http://blog.csdn.net/jiuqiyuliang/article/details/48758203



activeMq 消息持久化

需要mysql驱动jar包   activeio-core-3.1.4.jar   activemq-all-5.14.1.jar commons-pool-1.5.6.jar  commons-dbcp-1.4.jar

conf/activemq.xml修改以下内容
 <persistenceAdapter>
           <kahaDB directory="${activemq.data}/kahadb"/>
        </persistenceAdapter>
改为
 <persistenceAdapter>
<jdbcPersistenceAdapter  dataSource="#mysql-ds"  useDatabaseLock="false"/>
        </persistenceAdapter>

然后添加

<bean id="mysql-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">  
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>   
<property name="url" value="jdbc:mysql://192.168.137.6:3306/game?relaxAutoCommit=true"/>  
<property name="username" value="deminplat"/>  
<property name="password" value="deminplat"/>   
<property name="poolPreparedStatements" value="true"/>   
</bean>


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值