消息机制
测试代码如下:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:spring/applicationContext.xml"})
public class UserMqTest {
@Autowired
MessageService messageService;
// @Ignore
@Test
public void sendMessage(){
UserMq user = new UserMq();
user.setUid("a");
user.setAddress("魔都");
messageService.sendMessage(user);
System.out.println("消息已发送");
// UserMq user1 = new UserMq();
// user1 = messageService.receiveMessage();
//
// System.out.println("已获取消息:"+user1.getUid()+user1.getAddress());
// assertEquals(user1,null);
}
@Ignore
@Test
public void veceiveMessage(){
UserMq user = new UserMq();
user=messageService.receiveMessage();
if (null==user){
System.out.println("尼玛,是个空的");
}else{
System.out.println("已获取消息:"+user.getUid()+user.getAddress());
}
}
}
jms代码:
@Service
public class MessageServiceImpl implements MessageService {
@Autowired
Destination destination;
@Autowired
JmsTemplate jmsTemplate;
/**
* 发送消息
*/
public void sendMessage(final UserMq user){
jmsTemplate.send(destination, new MessageCreator() {
public Message createMessage(Session session) throws JMSException {
ObjectMessage msg = session.createObjectMessage(user);
// TextMessage msg = session.createTextMessage("hello world");
//msg.setStringProperty(name, value)
//设置域属性,用于messageSelector过滤,暂时不用
msg.setStringProperty("aaaa", "bbbb");
return msg;
}
});
}
/**
* 接受消息
*/
public UserMq receiveMessage(){
ObjectMessage receivedMessage = (ObjectMessage) jmsTemplate.receive(destination);
try {
return (UserMq) receivedMessage.getObject();
} catch (JMSException e) {
throw JmsUtils.convertJmsAccessException(e);
}
}
}
spirng 配置(独立的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:jms="http://www.springframework.org/schema/jms"
xmlns:amq="http://activemq.apache.org/schema/core"
xsi:schemaLocation="http://activemq.apache.org/schema/core
http://activemq.apache.org/schema/core/activemq-core.xsd
http://www.springframework.org/schema/jms
http://www.springframework.org/schema/jms/spring-jms.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<!-- <amq:connectionFactory id="connectionFactory" brokerURL="tcp://localhost:61616"/> -->
<amq:connectionFactory id="connectionFactory" brokerURL="${jms.tcp}"/>
<bean id="destination" class="org.apache.activemq.command.ActiveMQQueue">
<!-- <constructor-arg index="0" value="ecs.alert.queue"></constructor-arg> -->
<constructor-arg index="0" value="${jms.destination}"></constructor-arg>
</bean>
<!-- <bean id="messageHandler" class="com.rockey.emonitor.jms.controller.MessageHandler" /> -->
<bean name="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="connectionFactory" />
<!-- 接收超时时间:1s -->
<property name="receiveTimeout" value="${jms.receiveTimeout}"/>
<!-- 发送模式 DeliveryMode.NON_PERSISTENT=1:非持久 ; DeliveryMode.PERSISTENT=2:持久-->
<property name="deliveryMode" value="${jms.deliveryMode}"/>
<!-- 类型转换 (可以做一些前置和后置处理过滤信息等)-->
<!-- <property name="messageConverter" ref="jmsConverter"/> -->
</bean>
<!-- <bean name="jmsConverter" class="com.rockey.emonitor.jms.util.JmsTrxConverter" /> -->
<!-- <bean name="messageService" class="com.rockey.emonitor.jms.service.impl.MessageServiceImpl" /> -->
<!-- <bean name="messageReceiver" class="com.rockey.emonitor.jms.service.impl.MessageReceiverImpl" /> -->
<!-- 监听处理
<jms:listener-container connection-factory="connectionFactory">
<jms:listener destination="emonitor.alert.queue" ref="messageHandler" method="processMessage" />
</jms:listener-container> -->
</beans>
参数配置文件:
#服务端地址
jms.tcp=tcp://localhost:61616
#目标名称
jms.destination=ecs.alert.queue
#超时时间(毫秒)
jms.receiveTimeout=1000
#消息的发送模式,1、非持久化。2、持久化
jms.deliveryMode=2
pom文件:
<!-- ActiveMQ start -->
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq</artifactId>
<version>5.9.0</version>
</dependency>
<!-- jmsTemplete的依赖包 start安装该包会自动下载 Spring-1.2.4jar,这个包就包含有jms-->
<dependency>
<groupId>org.apache.xbean</groupId>
<artifactId>xbean-spring-common</artifactId>
<version>2.8</version>
</dependency>
<!-- jmsTemplete的依赖包 end -->
<dependency>
<groupId>org.apache.xbean</groupId>
<artifactId>xbean-spring</artifactId>
<version>3.7</version>
</dependency>
<!-- ActiveMQ end -->
调用方代码目前没写,以后补上
相关推荐
ActiveMQ是中国最流行的开源消息中间件之一,由Apache软件基金会开发。它基于Java Message Service (JMS) 规范,提供了可靠的消息传递功能,适用于分布式系统中的应用间通信。本压缩包“activeMQ收发工具.rar”包含...
### ActiveMQ高并发处理方案详解 #### 一、引言 在现代分布式系统中,消息队列作为异步通信的核心组件之一,对于提高系统的吞吐量、降低响应时间和实现服务解耦等方面起着至关重要的作用。Apache ActiveMQ作为一款...
Apache ActiveMQ是开源的、基于Java消息服务(JMS)的应用服务器,它是Apache软件基金会的一部分。这个名为"apache-activemq-5.17.3"的压缩包包含了ActiveMQ的5.17.3版本,这是一个稳定且功能丰富的发布版本。在深入...
Apache ActiveMQ是业界广泛使用的开源消息中间件,它基于Java消息服务(JMS)标准,提供了高度可扩展、可靠的异步通信能力。标题"apache-activemq-5.16.5"指的是该软件的一个特定版本,即5.16.5版本,通常每个新版本...
本报告详细阐述了使用JMeter对ActiveMQ进行性能测试的过程和结果,旨在评估ActiveMQ在JMS(Java消息服务)环境下的性能表现。JMeter作为一个强大的负载和性能测试工具,被广泛用于测试各种应用程序,包括消息中间件...
jmx监控ActiveMQ监控 jmx(Java Management Extensions)是一种Java技术,为Java应用程序提供了管理和监控的功能。ActiveMQ是Apache软件基金会下的一个开源消息队列系统,提供了高效、可靠的消息传递服务。在生产...
在Linux环境下,Apache ActiveMQ是一个广泛使用的开源消息代理和队列服务器,它是Java Message Service (JMS) 的实现,能够处理大量的并发消息传递。ActiveMQ提供了高可用性、可扩展性和稳定性,使得它成为分布式...
Apache ActiveMQ是Apache软件基金会开发的一个开源消息中间件,它基于Java Message Service (JMS) 规范,提供高效、可靠的消息传递服务。在本文中,我们将深入探讨Apache ActiveMQ,特别是针对“apache-activemq-...
ActiveMQ路由配置方式 ActiveMQ路由配置是Apache ActiveMQ项目中的一种重要配置方式,它依赖另一个Apache项目Camel。ActiveMQ集成了Camel,启动时同时会启动Camel。通过Camel Web Console可以进行Routing配置。 ...
Apache ActiveMQ是开源社区中最流行的消息中间件之一,它基于Java消息服务(JMS)标准,提供高效、可靠的异步通信解决方案。ActiveMQ在企业级应用中广泛应用,因为它支持多种协议,如OpenWire、STOMP、AMQP、MQTT、...
ActiveMQ是中国最流行的开源消息中间件之一,基于Java Message Service(JMS)规范,它提供了一个高可伸缩、高性能、稳定且灵活的消息传递平台。这个"ActiveMQ接受和发送工具.rar"压缩包包含了用于与ActiveMQ交互的...
ActiveMQ是一款非常流行的开源消息队列中间件,它实现了JMS(Java Message Service,Java消息服务)1.1规范,面向消息的中间件(Message Oriented Middleware,MOM)是指利用高效可靠的消息传递机制进行与平台无关的...
ActiveMQ是Apache软件基金会开发的一款开源消息中间件,它遵循开放消息传递标准(JMS,Java Message Service),用于在分布式系统中实现可靠的消息传递。在本文中,我们将深入探讨ActiveMQ v6.0.1的核心特性、应用...
Spring集成ActiveMQ是将Spring框架与ActiveMQ消息中间件相结合,实现异步处理和解耦应用程序的关键技术。在本文中,我们将深入探讨如何配置和使用这一组合,以及它在实际项目中的应用。 首先,让我们了解Spring框架...
#### 一、ActiveMQ简介 ActiveMQ是一款非常流行的开源消息中间件,它基于Java语言开发,并且遵循了Java消息服务(JMS)规范。ActiveMQ提供了丰富的特性,包括持久化消息存储、事务支持、集群等功能。在企业级应用中,...
ActiveMQ in Action pdf英文原版加源代码压缩包。 Apache ActiveMQ in Action is a thorough, practical guide to implementing message-oriented systems in Java using ActiveMQ. The book lays out the core of ...
Apache ActiveMQ是业界广泛使用的开源消息中间件,尤其在Linux环境下表现出色。它基于Java语言开发,遵循Apache软件基金会的许可证,并且实现了多种消息传递协议,包括OpenWire、STOMP、AMQP和XMPP等。在Linux系统上...
Apache ActiveMQ是开源社区中最流行的Java消息代理,也是企业级消息中间件(Message Broker)的首选之一。在最新的稳定版5.15.0中,它提供了可靠的消息传递功能,适用于分布式应用程序之间的通信,实现了异步处理、...
本资源提供的内容是关于ActiveMQ的连接池实现,分为两部分:一是作者自己实现的ActiveMQ连接池,二是新版本ActiveMQ自带的连接池。连接池是一种资源管理技术,通过复用已建立的数据库连接或网络连接,减少创建和销毁...
而ActiveMQ是Apache出品的一款开源消息中间件,它遵循JMS(Java Message Service)规范,用于处理应用程序之间的异步通信。本教程将详细介绍如何在Spring Boot项目中集成ActiveMQ,实现消息接收的Demo。 首先,我们...