`
lihao312
  • 浏览: 479653 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

spring集成ActiveMQ, 消息提供者

    博客分类:
  • java
阅读更多
1.spring集成ActiveMQ,依赖包
<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-jms</artifactId>
	<version>4.2.6.RELEASE</version>
</dependency>
<dependency>
	<groupId>org.apache.activemq</groupId>
	<artifactId>activemq-client</artifactId>
	<version>5.13.3</version>
</dependency>
<dependency>
	<groupId>org.apache.activemq</groupId>
	<artifactId>activemq-spring</artifactId>
	<version>5.13.3</version>
</dependency>

2.配置spring文件,主要配置ConnectionFactory,和ActiveMQDestination,JSMTemplate
<!-- ActiveMQConnectionFactory -->
<bean id="activeMQConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
	<constructor-arg index="0" value="tcp://127.0.0.1:61616"/>
	<property name="trustedPackages">
		<list>
			<value>com.lance.mq</value>
			<value>java.util</value>
		</list>
	</property>
</bean>

<!-- 创建pooledConnectionFactory连接池, JmsTemlate每次发送消息都重新打开一个Connection -->
<bean id="pooledConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory">
	<property name="connectionFactory" ref="activeMQConnectionFactory"/>
	<property name="maxConnections" value="5"/>
</bean>


<!-- CachingConnectionFactory 
<bean id="connectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory">
	<constructor-arg index="0" ref="activeMQConnectionFactory"/>
</bean>
-->

<!-- jmsTemplate -->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
	 <property name="connectionFactory" ref="pooledConnectionFactory"/>
	 <property name="messageConverter">
		<bean class="org.springframework.jms.support.converter.SimpleMessageConverter"/>
	 </property>
</bean>

<!-- ActiveMQQueue -->
<bean id="activeMQQueue" class="org.apache.activemq.command.ActiveMQQueue">
	<constructor-arg index="0" value="queue"/>
</bean>

3.消息发送
/**
 * 发送Text消息队列
 * @param message
 */
public void sendTextQueueMessage(final String message) {
	jmsTemplate.send(activeMQQueue, new MessageCreator(){
		@Override
		public Message createMessage(Session session) throws JMSException {
			return session.createTextMessage(message);
		}
	});
}

/**
 * 发送消息并处理消息返回值
 * @param message
 * @throws JMSException 
 */
public String sendTextQueueMessageAndReceive(final String message) throws JMSException {
	Message replyMessage = jmsTemplate.sendAndReceive(activeMQQueue, new MessageCreator(){
		@Override
		public Message createMessage(Session session) throws JMSException {
			return session.createTextMessage(message);
		}
	});
	
	log.info("sendTextAndReceive: {}", JSON.toJSONString(replyMessage));
	TextMessage textMessage = (TextMessage)replyMessage;
	return textMessage.getText();
}

/**
 * 订单入队列
 * @param info
 * @throws JMSException 
 */
public String sendObjectQueueMessage(final OrderInfo info) throws JMSException {
	Message message = jmsTemplate.sendAndReceive(activeMQQueue, new MessageCreator() {
		@Override
		public Message createMessage(Session session) throws JMSException {
			return session.createObjectMessage(info);
		}
	});
	
	log.info("sendTextAndReceive: {}", JSON.toJSONString(message));
	TextMessage textMessage = (TextMessage)message;
	return textMessage.getText();
}


5.可以模拟多个生产者,在高并发下,多台服务器请求进入消息队列,交给消费者统一生成订单,详见demo地址:
https://github.com/leelance/demo/tree/master/demo-springmvc-activemq
分享到:
评论

相关推荐

    jms之activeMQ 队列和广播模式例子(主要给初学者提供入门知识)

    NULL 博文链接:https://zhaoshijie.iteye.com/blog/2090954

    springcloud入门

    springcloud-producer:服务提供者,包含具体的业务逻辑实现等。 springcloud-consumer:服务消费者,从eureka server中获取producer提供的服务。 springcloud-gateway:网关接口,暴露给调用方调用,包含负载均衡、...

    springCloud

    消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。 AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。 Github:https://github.com/rabbitmq ...

    Spring in Action(第2版)中文版

    10.1.3在spring中安装activemq 10.2协同使用jms和spring 10.2.1处理冗长失控的jms代码 10.2.2使用jms模板 10.2.3转换消息 10.2.4将spring的网关支持类应用于jms 10.3创建消息驱动pojo 10.3.1创建消息监听器 ...

    Spring in Action(第二版 中文高清版).part2

    10.1.3 在Spring中安装ActiveMQ 10.2 协同使用JMS和Spring 10.2.1 处理冗长失控的JMS代码 10.2.2 使用JMS模板 10.2.3 转换消息 10.2.4 将Spring的网关支持类应用于JMS 10.3 创建消息驱动POJO 10.3.1 创建...

    Spring in Action(第二版 中文高清版).part1

    10.1.3 在Spring中安装ActiveMQ 10.2 协同使用JMS和Spring 10.2.1 处理冗长失控的JMS代码 10.2.2 使用JMS模板 10.2.3 转换消息 10.2.4 将Spring的网关支持类应用于JMS 10.3 创建消息驱动POJO 10.3.1 创建...

    MuleStudio用户手册.doc

    它支持30多种传输协议(file,FTP,UDP,TCP,email,HTTP,SOAP,JMS等),并整合了许多流行的开源项目,比如Spring,ActiveMQ,CXF,Axis,Drools等。虽然Mule没有基于JBI来构建其架构,但是它为JBI容器提供了JBI适配器,应此...

    mule in action 说明+文档介绍

    它支持30多种传输协议(file,FTP,UDP,TCP,email,HTTP,SOAP,JMS等),并整合了许多流行的开源项目,比如Spring,ActiveMQ,CXF,Axis,Drools等。虽然Mule没有基于JBI来构建其架构,但是它为JBI容器提供了JBI适配器,因此...

    单点登录源码

    | ├── zheng-upms-rpc-service -- rpc服务提供者 | └── zheng-upms-server -- 用户权限系统及SSO服务端[端口:1111] ├── zheng-cms -- 内容管理系统 | ├── zheng-cms-common -- cms系统公共模块 | ├──...

    Jetty中文手册

    Context提供者 如何部署web应用 webApp提供者 如何部署第三方产品 部署展开形式的web应用 使用Jetty进行开发 如何使用Jetty进行开发 如何编写Jetty中的Handlers 使用构建工具 如何在Maven中使用Jetty 如何在Ant中...

    java开源包1

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包11

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包2

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包3

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包6

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包5

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包10

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包4

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包8

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

Global site tag (gtag.js) - Google Analytics