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>
指定队列名称
时间: 2024-10-12 16:37:06