文档章节

消息中间件(2)-ActiveMq & Spring 技术集成

haoran_10
 haoran_10
发布于 2016/07/15 16:38
字数 564
阅读 154
收藏 0
点赞 0
评论 0
  • 一、为什么需要spring + activeMq 集成?

1、原生的JMS使用起来,太繁琐,需要封装很多层才能在正式代码中使用,

2、activemq一套开源的JMS实现方案,实现了服务端和客户端,开箱即用

3、spring一整套组件,直接拿来主义

 

  • 二、实现步骤

1、开启activemq服务端

直接从官网下载 http://activemq.apache.org/,开箱即用的东西,略过。

 

2、客户端调用所需要的关键jar包,使用的maven管理,其他包管理类似

 

<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-jms</artifactId>
	<version>4.0.6.RELEASE</version>
</dependency>
<dependency>
	<groupId>org.apache.activemq</groupId>
	<artifactId>activemq-core</artifactId>
	<version>5.7.0</version>
</dependency>
<dependency>
	<groupId>org.apache.activemq</groupId>
	<artifactId>activemq-pool</artifactId>
	<version>5.7.0</version>
</dependency>

 

 

实际使用的时候,可以适当调整版本号

 

3、在JMS规范 中,使用JMS几个步骤,

   (1)、用JNDI 得到ConnectionFactory对象;

    (2)、用JNDI 得到目标队列或主题对象,即Destination对象;

    (3)、用ConnectionFactory创建Connection 对象;

    (4)、用Connection对象创建一个或多个JMS Session;

    (5)、用Session 和Destination 创建MessageProducer和MessageConsumer;

    (6)、通知Connection 开始传递消息。

而activemq使用的步骤也是大同小异

 

   3.1、建立ConnectionFactory以及spring高度封装的JmsTemplate

     

@Bean
public PooledConnectionFactory PooledConnectionFactory(){
	ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory();
	connectionFactory.setBrokerURL(MQ_URL);//配置MQ_URL,例如tcp://localhost:61616
	
	PooledConnectionFactory PooledConnectionFactory = new PooledConnectionFactory();
	PooledConnectionFactory.setConnectionFactory(connectionFactory);
	
	return PooledConnectionFactory;
}

@Bean
public JmsTemplate JmsTemplate(){
	JmsTemplate JmsTemplate = new JmsTemplate();
	JmsTemplate.setConnectionFactory(PooledConnectionFactory());
	
	return JmsTemplate;
}

  3.2 建立Queue或者Topic

 

 

@Bean(name="queue1")
public Destination queue1Destination(){
	Destination destination = new ActiveMQQueue(queue1);//队列 定义queue1名称即可
       //Destination destination = new ActiveMQTopic(queue1);//主题
	
	return destination;
}

   

 

   第3,4步直接省略,JmsTemplate已经做好了

   3.3 发送消息

   

@Component
public class MyMessageSender {
	@Autowired JmsTemplate jmsTemplate;
	@Resource(name="queue1") Destination destination;
	
	public void send(String msg){
		jmsTemplate.send(destination, new MessageCreator() {
			@Override
			public Message createMessage(Session session) throws JMSException {
				TextMessage message = session.createTextMessage();
				message.setText(msg);
				return message;
			}
		});
	}
}

  发送消息是如此的简单,制定队列名称,就可以直接发送消息到队列或者主题

 

  3.4消息监听,有了消息发送就得有Consumer处理消息

  

@Component
public class MyMessageListener implements MessageListener{

	@Override
	public void onMessage(Message message) {
		System.out.println("==========Thread:"+Thread.currentThread().getId());
		System.out.println("==========MyMessageListener"+message.toString());
	}

}

   以及支持该消息监听的消息容器

    

@Autowired MyMessageListener messageListener;

@Bean(name="queue1ListenerContainer")
	public DefaultMessageListenerContainer DefaultMessageListenerContainer(){
		DefaultMessageListenerContainer listenerContainer = new DefaultMessageListenerContainer();
		listenerContainer.setConnectionFactory(PooledConnectionFactory());
		listenerContainer.setDestination(queue1Destination());
		listenerContainer.setMessageListener(messageListener);
		listenerContainer.setConcurrentConsumers(2);//可以理解为起两个线程去消费消息
		return listenerContainer;
	}

 

至此主流程开发结束。

 

 

 

© 著作权归作者所有

共有 人打赏支持
haoran_10
粉丝 25
博文 88
码字总数 80846
作品 0
杭州
程序员
activeMQ5官方文档翻译-运行消息中间件

把activeMQ中间件运行起来 注:如果你想以内嵌的方式来使用消息中间件的话你可以参照怎么在一个连接中间嵌入消息中间件 以二进制文件的方式分发的ActiveMQ自带了一个'activemq'的脚本文件来运...

z_jordon
2015/05/31
0
0
ActiveMQ初探(2)——与Spring整合

在上一章:ActiveMQ(1)——介绍与基本使用中,我们通过测试方法熟悉了ActiveMQ的流程,本章将ActiveMQ与Spring进行整合。 与Spring整合,除了原本的外,还需导入和包,如果Spring为5.0+,需...

yuanlaijike
05/08
0
0
ActiveMQ官方文档翻译-内嵌消息中间件

在大多数通信拓扑结构图中都有分JMS Brokers (服务端) 和JMS客户端。但有时会把消息中间件部署到你的jvm内部也是有道理的。This allows you to optimise away a network hop;让JMS的网络调用...

z_jordon
2015/06/01
0
0
漏网de鱼/fish java分布式商城B2C

系统介绍 Fish 是J2EE分布式开发,技术栈:(dubbo、zookeeper、activemq、Spring、SpringMVC、MyBatis、Shiro、redis、quartz、activiti、MYCAT) 包括核心模块如:用户管理、系统设置、权限...

漏网de鱼
04/23
0
0
深入浅出 消息队列 ActiveMQ

一、 概述与介绍 ActiveMQ 是Apache出品,最流行的、功能强大的即时通讯和集成模式的开源服务器。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现。提供客户端支持跨语言和...

亮liang
2015/05/27
0
0
Java消息中间件之ActiveMQ

一、消息中间件 1.消息中间件概述 中间件:非底层操作系统软件,非业务应用软件,不是直接给最终用户使用的,不能直接给客户带来价值的软件统称为中间件。 消息中间件:关注与数据的发送和接...

aibinxiao
2017/11/01
0
0
activeMQ5官方文档翻译-初始化配置

首先你需要把jar包加到classpath 所需的jar包 为了使ActiveMQ更容易使用,默认的activemq-all.jar包包含了所有需要用到的库文件。如果你喜欢以明确的控制jar包的方式来使用ActiveMQ,那下面是...

z_jordon
2015/05/29
0
0
springJMS+activeMQ实践

运行环境:jdk1.6 ,javaEE5 , spring2.5 ,activeMQ5.4.3. 一定要注意activeMQ的版本与jdk的兼容性,最新的activeMQ版本估计要在jdk1.7以上才能运行。 先说一下activeMQ的安装: 1、下载:h...

wangrikui
2015/06/28
0
2
spring整合jms系列之----点对点(一)

JMS作为一个支持点对点(PTP)和订阅式(pub/sub)式的消息中间件,为很多项目开发者所使用。Spring对JMS提供了很好的支持,可以通过JmsTemplate来方便地实现消息服务,由于JMS对Spring的支持...

码上中国博客
2015/11/12
0
0
ActiveMQ初探(3)——与SpringBoot整合

在上一章:ActiveMQ(2)——与Spring整合中,我们已经完成了ActiveMQ与Spring进行整合,本章将进行与SpringBoot整合。 发送即时消息 Step1:添加依赖包: 这里我们不使用网上大多数的,因为...

yuanlaijike
05/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Nginx upstream 负载均衡

Nginx upstream 负载均衡 了了情空 关注 2016.05.31 16:16* 字数 612 阅读 537评论 1喜欢 0 上周五同事跟我提一个需求,大概描述是酱紫:“我们现在终端都在访问同一台服务器,如果流量过大造...

linjin200
9分钟前
0
0
Dubbo 源码解读——自定义 Classloader 之 ExtensionLoader

众所周知,Dubbo 是阿里巴巴公司自主研发开源的一个高性能的服务框架(现已捐献给 Apache 基金会组织),应用之间可以通过 RPC 的方式来互相调用并返回结果。主要基于 Java 语言开发,它提供...

Ryan-瑞恩
16分钟前
0
0
Sonar Maven/IDEA集成(未完待续)

前言:在上一篇(SonarQube安装步骤)的基础上,我们来集成maven/IDEA 1.首先是集成maven(maven的安装配置就不多说了) 找到maven安装目录下-conf文件夹-setting.xml文件 然后添加以下配置信...

张艺兴女朋友
17分钟前
0
0
JVM的内存区域划分

JVM的内存区域划分   学过C语言的朋友都知道C编译器在划分内存区域的时候经常将管理的区域划分为数据段和代码段,数据段包括堆、栈以及静态数据区。那么在Java语言当中,内存又是如何划分的...

yzbty23
17分钟前
0
0
mysql 日期查询

MYSQL查询今天、昨天、7天前、30天、本月数据今天:SELECT * FROM 表名 WHERE TO_DAYS( 时间字段名) = TO_DAYS(NOW());昨天:SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) ...

evil_01
24分钟前
0
0
RuntimeError - [Xcodeproj] Unknown object version

在创建新工程,使用cocoaPods下载第三方库时,报如下的错: 报这个错,是因为xcode工程版本Deployment Target 和工程project format不匹配造成的,因此需要调整这两个配置一致,处理这个问题...

奋斗的青春年华
37分钟前
0
0
java中modbus协议连接

modbus在java中的使用,首先maven的pom中引入modbus4j包 <dependency><groupId>com.infiniteautomation</groupId> <artifactId>modbus4j</artifactId> <version>3.0.3......

江湖鱼大虾
40分钟前
0
0
Java单例的常见形式

Java单例的常见形式 本文目的:总结Java中的单例模式 本文定位:学习笔记 学习过程记录,加深理解,便于回顾。也希望能给学习的同学一些灵感 一、非延迟加载单例类 public class Singleton {...

lichuangnk
41分钟前
1
0
微信小程序接口报错47001的解决方法

使用微信小程序码的生成接口,发现死活都报47001错误。 有人提到是urlencode的问题,不能使用urlencode。 修改了代码,可以了。代码贴出来: import urllib.requestimport urllib.parse...

乐_然
44分钟前
0
0
6、Git安装

1、下载地址: https://git-scm.com/ 2、下载完成后安装,安装路径自己选择,其他的选项参照下图: 其他的一步一步往下即可,最后Finish完成安装; 3、配置github的ssh密钥: (1)打开Git Bas...

丑陋的皮囊
48分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部