我是靠谱客的博主 隐形荔枝,这篇文章主要介绍spring+springMvc+activeMq+maven+mybaits(基于全注解)spring activeMq 配置java activeMq监听器java activeMq消息发送java 消息公共类activeMq 消息持久化,现在分享给大家,希望可以做个参考。

这篇做一个综合的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>


最后

以上就是隐形荔枝最近收集整理的关于spring+springMvc+activeMq+maven+mybaits(基于全注解)spring activeMq 配置java activeMq监听器java activeMq消息发送java 消息公共类activeMq 消息持久化的全部内容,更多相关spring+springMvc+activeMq+maven+mybaits(基于全注解)spring内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(119)

评论列表共有 0 条评论

立即
投稿
返回
顶部