您的位置:首页 > 编程语言 > Java开发

spring集成jms用法

2016-05-06 16:28 363 查看

spring集成jms用法

JMS全称java message service,用于发送消息。

1、优势

1.相对RPC达到了解耦的效果:与服务接口名解耦(RPC中更改接口名称,客户端需要做修改)、与服务位置解耦(RPC需要配置服务的网络位置才能使用服务)、与服务的可用性解耦(RPC中当服务不可用时,客户端也无法正常运行)。

2.免去了等待,客户端将消息交给消息代理,然后就可以忙其他的事情了,而不需要阻塞等待。

2、主要概念

1.消息代理:确保信息投递到指定的目的地,同时释放发送者,使其能够继续进行其他业务。可以拿现实生活中的邮局做类比。

2.目的地:这里有两种类型的目的地:队列和主题。分别对应了点对点消息模型和发布-订阅消息模型。目的地并不关心消息由谁取走,只关注消息应该从哪里获取,故而目的地类似于信件的地址为“本地居民”

- 点对点消息模型:该模型中每个消息都有一个发送者和接受者,消息代理获得消息放入队列中,接收者请求队列中的下一跳消息时,消息会从队列中取出,投递给接受者。消息在投递后会从队列中删除,从而保证消息智能投递给一个接收者。每个消息只能投递给一个接收者,但是并不意味着只能使用一个接收者从队列中获取消息。

- 发布-订阅消息模型:消息会发送给一个主题,与队列类似的是,多个接收者都可以监听主题;不同地方是,队列中消息只投递给一个接收者,而主题中所有的订阅者都会收到此消息。

3、spring中消息代理搭建

本文中使用了ActiveMQ,在activemq发行包下载二进制发行包,bin目录下执行activemq start命令即可启动服务。

1创建连接工厂:告诉spring如何连接到activemq服务

<bean id ="connectionFactory" class="org.apache.activemq.spring.ActiveMQConnectionFactory">
<property name="brokerURL" value="tcp://localhost:61616">


2.声明ActiveMQ目的地:不论队列还是主题,都需要使用特定的消息代理实现类在spring中配置目的地bean

<bean id="queue" class="org.apahce.activemq.command.ActiveMQQueue">
<constructor-arg value="spitter.queue">
</bean>
<bean id="topic" class="org.apache.actrivemq.command.ActiveMQTopic">
<constructor-arg value="spitter.topic">
</bean>


其中
<constructor-arg>
指定队列名称
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: