`
vtrtbb
  • 浏览: 361601 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

spring结合activemq发送消息

    博客分类:
  • java
阅读更多

发送端配置文件:ApplicationContext.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
	<bean id="mqConnnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
		<property name="brokerURL">
			<value>failover:tcp://127.0.0.1:61616?wireFormat.maxInactivityDuration=0</value>
		</property>
		<property name="userName">
			<value>system</value>
		</property>
		<property name="password">
			<value>system</value>
		</property>
	</bean>
	<bean id="singleConnectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory">
		<property name="targetConnectionFactory" ref="mqConnnectionFactory"/>
	</bean>
	
	<bean id="SimpleMessageConverter" class="org.springframework.jms.support.converter.SimpleMessageConverter"/>
	
	<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
    	<property name="connectionFactory" ref="singleConnectionFactory"></property>
    	<property name="messageConverter" ref="SimpleMessageConverter"/>
    	<property name="timeToLive" value="180"/>
    	<property name="explicitQosEnabled" value="true"/>
    	<property name="pubSubDomain" value="true"/>
 	</bean>
 	
 	
</beans>

 

 

PushMain.java

package com.jms.activemq;

import java.util.HashMap;
import java.util.Map;

import org.springframework.beans.factory.ListableBeanFactory;
import org.springframework.beans.factory.generic.GenericBeanFactoryAccessor;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jms.core.JmsTemplate;

public class PushMain {
	public static void main(String[] args) {
		ListableBeanFactory lsb = new ClassPathXmlApplicationContext("classpath:com/jms/activemq/ApplicationContext.xml");
		GenericBeanFactoryAccessor gba = new GenericBeanFactoryAccessor(lsb);
		JmsTemplate jmsTemplate = (JmsTemplate) gba.getBean("jmsTemplate");
		Map<String,String> map = new HashMap<String,String>();
		map.put("fileName","某某文件");
		jmsTemplate.convertAndSend("updatefile", map);
	}
}

 

 

接收端:

一共三个文件

抽象类:AbstractListener.java

package com.jms.activemq;

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

import org.springframework.jms.listener.SessionAwareMessageListener;
import org.springframework.jms.support.converter.MessageConverter;

public abstract class AbstractListener implements MessageListener,SessionAwareMessageListener{
	
	private MessageConverter messageConverter;
	
	public void onMessage(Message message) {
		try {						
			onMessage(message, null);				
		}
		catch (Throwable ex) {
			ex.printStackTrace();
		}
	}
	public abstract void onMessage(Message message, Session session) throws JMSException;
	
	abstract void initCreateFile();
	
	public MessageConverter getMessageConverter() {
		return messageConverter;
	}
	public void setMessageConverter(MessageConverter messageConverter) {
		this.messageConverter = messageConverter;
	}
	
}

 

 

 

 ListenerA.java

 

package com.jms.activemq;

import java.util.Map;

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

public class ListenerA extends AbstractListener {

	@Override
	void initCreateFile() {
		
	}

	@Override
	public void onMessage(Message message, Session session) throws JMSException {
		Map<String,byte[]> map = (Map<String,byte[]>)this.getMessageConverter().fromMessage(message);
		System.out.println("----"+map.get("fileName"));
	}

}

 

 

ListenerB.java

 

package com.jms.activemq;

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

public class ListenerB extends AbstractListener {

	@Override
	void initCreateFile() {		

	}
	
	@Override
	public void onMessage(Message message, Session session) throws JMSException {
		System.out.println("------listenerB");

	}
}

 

ApplicationContext.xml文件

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
	<bean id="mqConnnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
		<property name="brokerURL">
			<value>failover:tcp://127.0.0.1:61616?connectionTimeout=0&amp;wireFormat.maxInactivityDuration=0</value>
		</property>
		
		<property name="userName">
			<value>system</value>
		</property>
		<property name="password">
			<value>system</value>
		</property>
	</bean>
	
	<bean id="singleConnectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory">
		<property name="targetConnectionFactory" ref="mqConnnectionFactory"/>
	</bean>
	
	<bean id="SimpleMessageConverter" class="org.springframework.jms.support.converter.SimpleMessageConverter"/>	
		
 	<bean id="ATL" class="com.jms.activemq.AbstractListener" abstract="true">
		<property name="messageConverter" ref="SimpleMessageConverter"/>
	</bean>	
	
	<bean id="ListenerContainerB" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
		  <property name="connectionFactory" ref="singleConnectionFactory"/>
		  <property name="messageListener">
		  	<bean class="com.jms.activemq.ListenerB" parent="ATL"></bean>
		  </property>
		  <property name="pubSubDomain" value="true"/>
		  <property name="destinationName"><value>DeleteFile</value></property>
	</bean>
		
	<bean id="ListenerContainerA" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
		  <property name="connectionFactory" ref="singleConnectionFactory"/>
		  <property name="messageListener">
		  	<bean class="com.jms.activemq.ListenerA" parent="ATL"></bean>
		  </property>
		  <property name="pubSubDomain" value="true"/>
		  <property name="destinationName"><value>updatefile</value></property>
	</bean>
</beans>

 

 

因为是tomcat工程, web.xml配置文件如下

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>jms3</display-name>
  
  <context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>/WEB-INF/ApplicationContext.xml</param-value>
    </context-param>
    
    <listener>
      	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
  
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>

 

分享到:
评论
1 楼 androidleader 2010-12-09  
看右上角,,,有人发过了。

相关推荐

    spring使用activeMQ实现消息发送

    综上所述,Spring与ActiveMQ的结合使用能帮助开发者构建高效、可靠的分布式系统,通过消息队列进行异步通信,提高了系统的并发能力和容错性。在实际项目中,可以根据具体需求调整配置和代码,实现复杂的消息处理场景...

    Spring+ActiveMQ消息队列+前台接收消息

    6. **事务管理**:Spring和ActiveMQ可以结合使用JTA事务,确保消息发送和业务操作的原子性。当开启JTA事务时,如果业务操作失败,消息也会被回滚,不会被发送到队列。 **前台接收消息** 在Web应用中,前台接收消息...

    spring + activemq 消息sample

    在IT行业中,Spring框架与...总之,Spring和ActiveMQ的结合使用,能够帮助开发者构建出高效、可扩展的系统,通过异步消息传递增强系统的健壮性和解耦性。理解并掌握这些知识点对于任何IT专业人士来说都是非常有价值的。

    JMS之Spring +activeMQ实现消息队列

    通过阅读和理解这些代码,你可以更好地了解Spring与ActiveMQ结合使用时的具体实现细节。 总的来说,通过Spring与ActiveMQ的整合,我们可以构建出可靠、高效的消息队列系统,从而改善系统的响应时间,提高可扩展性和...

    Spring 使用ActiveMQ 收发消息实例

    总结来说,Spring与ActiveMQ的结合为Java应用提供了强大的消息处理能力,通过简单的配置和API调用即可实现复杂的消息通信需求。在实际开发中,我们应充分利用Spring JMS模块的便利性和ActiveMQ的高性能特性,确保...

    spring+activemq

    在IT行业中,Spring框架与ActiveMQ的结合是构建企业级应用中常见的消息中间件解决方案。Spring框架是一个开源的Java平台,它提供了丰富的功能,包括依赖注入、AOP(面向切面编程)、数据访问、Web应用以及更多的服务...

    jms Spring+ActiveMQ 5.4.2

    Spring的JMS模块允许开发者声明式地配置消息生产者(发送者)和消费者(接收者),并且支持多种JMS供应商,如ActiveMQ、RabbitMQ和Apache Qpid等。通过使用Spring的`JmsTemplate`类,我们可以方便地发送和接收消息,...

    Spring集成ActiveMQ配置

    Spring集成ActiveMQ是将Spring框架与ActiveMQ消息中间件相结合,实现异步处理和解耦应用程序的关键技术。在本文中,我们将深入探讨如何配置和使用这一组合,以及它在实际项目中的应用。 首先,让我们了解Spring框架...

    spring配置activemq详解

    - 结合Spring Boot的自动配置能力,可以极大地简化ActiveMQ的集成过程,只需少量配置就能快速启动和运行。 7. **监控和管理**: - ActiveMQ提供了Web控制台,可以通过浏览器进行监控和管理,查看队列状态、消息...

    springboot集成activemq实现消息接收demo

    在IT行业中,Spring Boot是一个非常流行的微服务框架,它简化了Spring应用的开发过程。而ActiveMQ是Apache出品的一款...在实际生产环境中,ActiveMQ还可以与其他中间件、微服务架构结合,提供更强大的消息处理能力。

    Spring+ActiveMQ整合实例代码工程

    本实例代码工程"Spring+ActiveMQ整合实例代码工程"正是结合两者,展示了如何在Spring环境中配置并使用ActiveMQ进行消息传递。 首先,我们需要了解Spring与ActiveMQ整合的基本概念。Spring框架提供了对多种消息...

    Spring-ActiveMQ-jar

    4. **事务管理**:Spring可以与ActiveMQ结合,提供事务级别的消息发送和确认,确保消息的可靠传输。 5. **消息模板**:`JmsTemplate`是Spring JMS的核心工具,用于发送和接收消息,提供了灵活的模板方法模式,简化了...

    Spring+ActiveMQ实现,基于Maven

    在企业级应用开发中,Spring框架与ActiveMQ的结合使用是一种常见的消息中间件解决方案,用于实现应用程序间的异步通信和解耦。本项目基于Maven构建,提供了对Topic的实现,同时也支持轻松切换到Queue模式。 **...

    spring2 activemq5 tomcat6构建jms

    5. **事务管理**: 如果需要确保消息的一致性,可以结合Spring的事务管理功能,将消息发送与业务操作置于同一个事务中。 6. **测试和优化**: 测试消息系统的可靠性、性能和容错能力,根据需要进行调整和优化。 在...

    maven-spring-activemq

    总的来说,"maven-spring-activemq"项目展示了如何在Spring应用中利用Maven管理依赖,结合ActiveMQ实现消息传递,以提高系统的异步处理能力和可扩展性。通过理解和实践这个案例,开发者可以更好地理解Spring的JMS...

    spring集成activemq例子demo

    - Spring可以结合JMS提供事务支持,确保消息在成功处理后才被确认。 5. **测试** - 使用TestActiveMq类进行集成测试,模拟生产者发送消息和消费者接收消息的过程,确保整个链路的正确性。 集成Spring和ActiveMQ...

    Spring和ActiveMQ的整合实例源码

    本实例“Spring和ActiveMQ的整合实例源码”旨在展示如何将Spring框架与ActiveMQ结合使用,利用JMS进行高效的消息传递。这个实例适合那些希望学习或深入了解Spring框架如何与消息中间件集成的开发者。它基于Spring的...

    activemq与spring整合发送jms消息入门实例

    本教程将深入探讨如何将这两个强大的工具结合在一起,以创建一个简单的发送JMS消息的入门实例。 首先,我们需要理解ActiveMQ的基本概念。ActiveMQ是Apache软件基金会开发的一个开源消息代理,它实现了JMS规范,提供...

    多个spring 和ActiveMQ结合的项目

    2. **创建消息生产者**:在Spring应用中,我们可以定义一个`MessageProducer`类,它使用`JmsTemplate`来发送消息到ActiveMQ队列或主题。`JmsTemplate`是Spring提供的一个工具类,它简化了与JMS提供者的交互。 3. **...

Global site tag (gtag.js) - Google Analytics