activeMq构建应用 - 5
Posted for-what
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了activeMq构建应用 - 5相关的知识,希望对你有一定的参考价值。
Broker:相当于一个ActiveMQ服务器实例
命令行启动参数示例如下:
1:activemq start :使用默认的activemq.xml来启动
2:activemq start xbean:file:../conf/activemq-2.xml :使用指定的配置文件来启动
3:如果不指定file,也就是xbean:activemq-2.xml,那么xml必须在classpath下面
用ActiveMQ来构建Java应用:
将用ActiveMQ Broker作为独立的消息服务器来构建JAVA应用。
ActiveMQ也支持在vm中通信基于嵌入式的broker,能够无缝的集成其它java应用
此方式在本地启动一个broker,然后发消息和接消息都是在本地
activeMq结合Spring
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-all</artifactId>
<version>5.15.4</version>
</dependency>
<!-- activemq 连接池-->
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-pool</artifactId>
<version>5.15.4</version>
</dependency>
<!-- Spring对JMS的支持-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
<version>4.3.15.RELEASE</version>
</dependency>
...... spring 其他支持包
<?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:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <context:component-scan base-package="com.gordon"/> <!--配置BrokerService 只需启动spring容器即可创建出一个单例的broker ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); --> <!--<bean id="broker" class="org.apache.activemq.broker.BrokerService" init-method="start" destroy-method="stop"> <property name="brokerName" value="myBroker"/> <property name="persistent" value="false"/> <property name="transportConnectorURIs"> <list> <value>tcp://localhost:61616</value> </list> </property> </bean>--> <!--配置生产者 JmsTemplate是Spring提供的JMS工具类,它可以进行消息发送、接收等--> <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> <!--连接工厂--> <property name="connectionFactory" ref="jmsFactory"/> <!--消息类型--> <property name="defaultDestination" ref="queue"/> <!--消息转换器MessageConverter 详解:http://elim.iteye.com/blog/1900937--> <property name="messageConverter"> <bean class="org.springframework.jms.support.converter.SimpleMessageConverter"/> </property> </bean> <!--activeMq连接池--> <bean id="jmsFactory" class="org.apache.activemq.jms.pool.PooledConnectionFactory" destroy-method="stop"> <!--连接工厂 真正可以产生Connection的ConnectionFactory--> <property name="connectionFactory"> <bean class="org.apache.activemq.ActiveMQConnectionFactory"> <property name="brokerURL"> <value>tcp://192.168.157.4:61616</value> </property> </bean> </property> <!--最大连接数--> <property name="maxConnections" value="100"/> </bean> <!--topic消息类型--> <bean id="topic" class="org.apache.activemq.command.ActiveMQTopic"> <!--constructor-arg:通过构造函数注入 index="0"表示第一个参数--> <constructor-arg index="0" value="spring-topic"/> </bean> <!--ptp消息类型--> <bean id="queue" class="org.apache.activemq.command.ActiveMQQueue"> <constructor-arg index="0" value="spring-queue"/> </bean> <!-- 配置消费者 --> <bean id="jmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer"> <!--表示监听的是哪个ConnectionFactory--> <property name="connectionFactory" ref="jmsFactory"/> <!--监听什么的Destination--> <property name="destination" ref="topic"/> <!--接收到消息以后进行消息处理的MessageListener--> <property name="messageListener" ref="messageListener"/> </bean> <bean id="messageListener" class="com.gordon.basis.CustomMessageListener"/> </beans>
package com.gordon.spring; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.jms.core.JmsTemplate; import org.springframework.jms.core.MessageCreator; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.Session; import javax.jms.TextMessage; /** * Created by gordon on 2018/9/22. */ public class QueueSender { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); JmsTemplate jmsTemplate = (JmsTemplate) context.getBean("jmsTemplate"); jmsTemplate.send(new MessageCreator() { @Override public Message createMessage(Session session) throws JMSException { TextMessage textMessage = session.createTextMessage("activeMQ spring test 发送消息 "); return textMessage; } }); } }
package com.gordon.spring; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.jms.core.JmsTemplate; /** * Created by gordon on 2018/9/22. */ public class QueueReceiver { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); JmsTemplate jmsTemplate = (JmsTemplate) context.getBean("jmsTemplate"); String msg = (String) jmsTemplate.receiveAndConvert(); System.out.println("activemq spring test 接收消息 : " + msg); } }
以上是关于activeMq构建应用 - 5的主要内容,如果未能解决你的问题,请参考以下文章