一、准备一个可以运行的Spring环境
二、下载ActiveMQ (
下载地址)
2.1 先确保ActiveMQ运行正常,直接运行 安装目录\bin\activemq.bat即可,
注意:如果要以服务方式运行的话,可以使用ActiveMQ 提供的工具 安装目录\bin\win32\InstallService.bat 确保以管理员方式运行
可以打开链接, (
http://localhost:8161/admin)查看是否安装成功
三、试用
单独编写消息发送者和消息接受以测试相应
消息发送
public static void main(String[] args) throws JMSException
{
// ConnectionFactory :连接工厂,JMS 用它创建连接
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER,
ActiveMQConnection.DEFAULT_PASSWORD, "tcp://localhost:61616");
// JMS 客户端到JMS Provider 的连接
Connection connection = connectionFactory.createConnection();
connection.start();
// Session: 一个发送或接收消息的线程
Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
// Destination :消息的目的地;消息发送给谁.
// 获取session注意参数值Queue.Name是Query的名字
Destination destination = session.createQueue("[color=red]Queue.Name[/color]");
// MessageProducer:消息生产者
MessageProducer producer = session.createProducer(destination);
// 设置不持久化
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
// 发送一条消息
sendMsg(session, producer);
session.commit();
connection.close();
}
/**
* 在指定的会话上,通过指定的消息生产者发出一条消息
*
* @param session 消息会话
* @param producer 消息生产者
*/
public static void sendMsg(Session session, MessageProducer producer) throws JMSException
{
// 创建一条文本消息
TextMessage message = session.createTextMessage("Hello ActiveMQ!");
// 通过消息生产者发出消息
producer.send(message);
System.out.println("");
}
消息接收
public static void main(String[] args) throws JMSException
{
// ConnectionFactory :连接工厂,JMS 用它创建连接
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER,
ActiveMQConnection.DEFAULT_PASSWORD, "tcp://localhost:61616");
// JMS 客户端到JMS Provider 的连接
Connection connection = connectionFactory.createConnection();
connection.start();
// Session: 一个发送或接收消息的线程
Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
// Destination :消息的目的地;消息发送给谁.
// 获取session注意参数值xingbo.xu-queue是一个服务器的queue,须在在ActiveMq的console配置
Destination destination = session.createQueue("Queue.Name");
// 消费者,消息接收者
MessageConsumer consumer = session.createConsumer(destination);
while(true)
{
TextMessage message = (TextMessage) consumer.receive(1000);
if(null != message)
System.out.println("收到消息:" + message.getText());
else
break;
}
session.close();
connection.close();
}
开启你的ActiveMQ服务器,测试一下吧。发送一个消息,然后看看接收到的成果
四、 Spring 注入
spring application.xml 文件配置
<!-- 配置JMS消息发送 -->
<bean id="jmsFactory" class="org.apache.activemq.pool.PooledConnectionFactory"
destroy-method="stop">
<property name="connectionFactory">
<bean class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL">
<value>tcp://localhost:61616</value>
</property>
</bean>
</property>
</bean>
<!-- Spring JMS Template -->
<bean id="myJmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory">
<ref local="jmsFactory" />
</property>
</bean>
<bean id="destination" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg index="0">
<value>Queue.Name</value>
</constructor-arg>
</bean>
<bean id="sender" class="demo.JmsQueueSender">
<property name="jmsTemplate" ref="myJmsTemplate"></property>
</bean>
<bean id="receive" class="demo.JmsQueueReceiver"></bean>
<bean id="listenerContainer"
class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="jmsFactory"></property>
<property name="messageListener" ref="receive"></property>
<property name="destination" ref="destination" />
</bean>
<!-- 配置JMS消息发送完成 -->
注意这里需要几个包 ,activeio-core-3.1.2.jar,activemq-all-5.5.0.jar,activemq-pool-5.5.0.jar,commons-pool-1.5.6.jar
剩下的就是在你的程序里面添加相应的消息发送和接收程序了
sender
@Component
public class JmsQueueSender
{
private JmsTemplate jmsTemplate;
public void setConnectionFactory(ConnectionFactory cf)
{
this.jmsTemplate = new JmsTemplate(cf);
}
public void simpleSend()
{
jmsTemplate.convertAndSend("Queue.Name", "test!!!");
}
public JmsTemplate getJmsTemplate()
{
return jmsTemplate;
}
public void setJmsTemplate(JmsTemplate jmsTemplate)
{
this.jmsTemplate = jmsTemplate;
}
}
receiver
@Component
public class JmsQueueReceiver implements MessageListener
{
@Override
public void onMessage(Message message)
{
if(message instanceof TextMessage)
{
final TextMessage textMessage = (TextMessage) message;
try
{
System.out.println(textMessage.getText());
}
catch(final JMSException e)
{
e.printStackTrace();
}
}
}
}
五、配置ActiveMQ以数据库的方式存储消息
ActiveMQ安装目录\conf\activemq.xml
找到 <broker>标签中的内容
<persistenceAdapter>
<kahaDB directory="${activemq.base}/data/kahadb"/>
</persistenceAdapter>
注释掉以上内容,添加自己的数据库配置
<persistenceAdapter>
<jdbcPersistenceAdapter dataSource="#mysql-ds"/>
</persistenceAdapter>
配置以Mysql的方式保存消息
在<broker>标签以外的地方添加数据源
<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://localhost/activemq?relaxAutoCommit=true"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
<property name="poolPreparedStatements" value="true"/>
</bean>
将Mysql的包加到ActiveMQ的启动Lib下
在Mysql数据中新建数据库 activemq ,ActiveMQ在启动的时候会自动建表。
OK 。。。。
重新启动服务。 这样消息的发送者的消息将被保存到Mysql数据库,同时消息消耗者每读取一条消息。数据库中的消息也会相应的删除。
分享到:
相关推荐
Spring与ActiveMQ的集成非常便捷,可以使用Spring的JmsTemplate或配置监听容器来发送和接收消息。 MyBatis是一个轻量级的持久层框架,它简化了Java应用与数据库之间的交互。MyBatis允许开发者编写SQL语句,将它们与...
在本项目中,"学习用Java写一个聊天室,spring4.2.5+mybatis+mysql+shiro+activemq+html5.zip",我们将会探讨一系列关键的Java Web开发技术,这些技术用于构建一个实时的在线聊天室。这个项目结合了Spring框架、...
综上所述,这个项目利用Spring MVC作为后端控制器,Eclipselink和JPA处理数据库操作,ActiveMQ实现消息的实时传输,MySQL存储数据,SUI则用于构建前端界面,提供用户友好的聊天功能。这些技术的结合,构建出一个高效...
在本项目"ActiveMQ+Camel+Spring+jms Demo(二)"中,我们将探讨一个集成ActiveMQ消息中间件、Apache Camel路由引擎、Spring框架以及Java消息服务(JMS)的示例应用。这个组合提供了强大的企业级消息处理能力,是...
【标题】中的“管理系统系列--基于SSH+easyUI+ActiveMQ+MySQL的校园宿舍管理系统”指的是一款结合了多种技术的校园宿舍管理软件。SSH、easyUI、ActiveMQ和MySQL是构建这个系统的关键技术组件。 **SSH(Struts2 + ...
在IT行业中,Spring Boot、MyBatis和ActiveMQ是三个非常重要的组件,分别用于简化Spring应用的初始化,处理持久化操作以及实现消息队列。本文将深入探讨如何将这三个技术整合到一个项目中,以便构建高效、可扩展的...
ActiveMQ是Apache的一个开源消息中间件,支持多种协议,如JMS(Java消息服务)。在SSM框架中,ActiveMQ可以用来实现异步处理、解耦系统组件以及提供高可用性。 7. CXF Webservice: Apache CXF是一个用于构建和开发...
1. **Spring集成ActiveMQ的基本配置**:在Spring应用中使用ActiveMQ,首先需要在Spring配置文件中添加JMS相关的bean,如ConnectionFactory、Destination(Queue或Topic)、MessageListenerContainer等。这些配置将...
ActiveMQ 是Apache出品的一款消息中间件,基于Java消息服务(JMS)。它允许应用程序之间通过异步消息传递进行通信,提高系统的可扩展性和解耦度。在微服务架构中,ActiveMQ常被用于服务间的通讯。 5. **Redis**: ...
你可以通过修改`activemq.xml`配置文件来设置持久化存储,比如将消息存储到MySQL数据库。在配置中指定数据源,如下所示: ```xml ${activemq.data} <driverClassName>...
在Spring+JMS+Mysql的场景下,消息可能会与数据库操作相结合,比如在消息发送或接收后执行相关的数据库事务,确保数据的一致性。通过这样的集成,你可以构建出高可用、可扩展的分布式系统,有效地处理大量并发的异步...
涵盖的主题Sprint Boot子休息区ApiSpring启动批处理SSL连接JMS(Java消息服务) Swagger UI用于可视化API错误处理基本认证POJO <-> DTO的映射器记录中测验使用DataJpaTest的存储库使用DataMongoTest的存储库使用...
jms.jar`或者`spring-context-support.jar`,这些是Spring框架对JMS支持的扩展,允许开发者利用Spring的IoC(Inversion of Control)和AOP(Aspect Oriented Programming)特性来更方便地集成ActiveMQ。例如,Spring...
前端:angularJS + Bootstrap 后台:SSM( springmvc+spring+mybatis) 数据库:mysql,使用mycat读写分离 开发模式:SOA 服务中间件:dubbox,需要和zookeeper配合使用 注册中心:zookeeper 消息中间件:Activemq,...
zookeeper 消息中间件:Activemq,使用spring-jms 负载均衡:nginx 搜索:solr集群(solrCloud),配合zookeeper搭建, 使用spring-data-solor 缓存:redis集群,使用spring-data-redis 图片存储:fastDFS集群 网页...
8. **ActiveMQ的下载与安装**:课程中可能涵盖ActiveMQ的下载和配置过程,帮助开发者建立本地环境,以便实践JMS的使用。 通过学习这些知识点,开发者将能够理解消息中间件的作用,选择适合的中间件产品,以及使用...
在SpringBoot中,我们可以通过Spring的JMS模块集成ActiveMQ。首先,添加ActiveMQ客户端依赖,接着配置连接工厂和目的地(队列或主题)。然后,可以创建消息生产者和消费者,使用`JmsTemplate`发送和接收消息。在高...
消息中间件:Activemq,使用弹簧JMS 负载均衡:nginx的的 搜索:Solr中的集群(solrCloud),配合动物园管理员搭建,使用弹簧-数据-索洛 缓存:Redis的的集群,使用弹簧数据redis的的 图片存储:fastDFS集群 | |...
ActiveMQ是Apache软件基金会开发的一款开源消息代理,它实现了Java消息服务(JMS)1.1和J2EE 1.4规范,为各种应用程序提供可靠的消息传递功能。ActiveMQ的特点在于其广泛的语言和协议支持,包括Java、C、C++、C#、...
- 利用Spring Boot自动配置特性,创建JMS消息发布/订阅应用程序。 - 修改和调试应用结果,覆盖默认的Bean或属性。 - 创建自定义健康检查来检查消息代理(如ActiveMQ)。 - 将定制的应用数据和自定义指标集成到...