JMS Apache ActiveMQ(消息中间件)使用攻略
2014-09-02 16:24
495 查看
首先在做任何技术预研的时候:我会搞清除它是什么?为什么要使用它?
JMS 它是什么?
Java Message Service是一组接口和相关语义,他定义了JMS客户如何访问企业消息产生的功能。
JMS支持消息中间件的两种传递模式:点到点模式(point to point)和发布-订阅模式(pub/sub)。
JMS消息模型:
消息头(header):JMS消息头包含了许多字段,它们是消息发送后由JMS提供者或消息发送者产生,用来表示消息、设置优先权和失效时间等等,并且为消息确定路由。
属性(property):由消息发送者产生,用来添加删除消息头以外的附加信息。
消息体(body):由消息发送者产生,JMS中定义了5种消息体:ByteMessage、MapMessage、ObjectMessage、StreamMessage和TextMessage。
为什么要使用JMS?
消息是一个分布式的低耦合通讯方案,生产者A发送一个消息到agent,消费者B去agent上获取消息,但是A,B不需要同时到agent上去注册,agent提供高效率的通讯服务。
安全。因为AB不关联,使得其中一方的重启、退出等不至于影响到另一方。
对消息的完整性判断,消息不需要遵照严格的事物要求,可以丢失。
目前我所接触的系统大都是每人开发一个模块,然后用HTTP接口访问。有多个用户注册的入口,用户注册事件也分配到不同的代码里,看起来相当的不舒服,所以决定用JMS来处理事件触发后的逻辑,降低系统的耦合,也方便开发修改代码。
ActiveMQ的安装以及配置,这里就不多做介绍了,大家可以网上查找资料搞定。
下面是ActiveMQ与Spring集合时的配置文件:
3. 消息监听处理类(消费者):
JMS 它是什么?
Java Message Service是一组接口和相关语义,他定义了JMS客户如何访问企业消息产生的功能。
JMS支持消息中间件的两种传递模式:点到点模式(point to point)和发布-订阅模式(pub/sub)。
JMS消息模型:
消息头(header):JMS消息头包含了许多字段,它们是消息发送后由JMS提供者或消息发送者产生,用来表示消息、设置优先权和失效时间等等,并且为消息确定路由。
属性(property):由消息发送者产生,用来添加删除消息头以外的附加信息。
消息体(body):由消息发送者产生,JMS中定义了5种消息体:ByteMessage、MapMessage、ObjectMessage、StreamMessage和TextMessage。
为什么要使用JMS?
消息是一个分布式的低耦合通讯方案,生产者A发送一个消息到agent,消费者B去agent上获取消息,但是A,B不需要同时到agent上去注册,agent提供高效率的通讯服务。
安全。因为AB不关联,使得其中一方的重启、退出等不至于影响到另一方。
对消息的完整性判断,消息不需要遵照严格的事物要求,可以丢失。
目前我所接触的系统大都是每人开发一个模块,然后用HTTP接口访问。有多个用户注册的入口,用户注册事件也分配到不同的代码里,看起来相当的不舒服,所以决定用JMS来处理事件触发后的逻辑,降低系统的耦合,也方便开发修改代码。
ActiveMQ的安装以及配置,这里就不多做介绍了,大家可以网上查找资料搞定。
下面是ActiveMQ与Spring集合时的配置文件:
<?xml version="1.0" encoding="UTF-8"?>
3. 消息监听处理类(消费者):
import javax.annotation.Resource; import javax.jms.JMSException; import javax.jms.MapMessage; import javax.jms.Message; import javax.jms.MessageListener; import javax.jms.TextMessage; import org.springframework.stereotype.Component; import com.getop.sales.service.JmsBusinessService; /** *@ClassName: TopicReceiver *@Description: 消息监听器,注意要实现MessageListener */ @Component public class TopicReceiver implements MessageListener { // service接口 @Resource private JmsBusinessService jmsBusinessService; // 重写onMessage方法 @Override public void onMessage(Message message) { try { System.out.println("TopicReceiver接收到消息:" + ((TextMessage) message).getText()); boolean financialFlag = false; boolean loanFlag = false; // 当消息体为:TextMessage 做出的操作 if (message instanceof TextMessage) { // 理财客户 financialFlag = jmsBusinessService.modifyFinancialUserByTypes(((TextMessage) message).getText()); if (financialFlag) System.out.println("理财客户状态->有效->已更改为:待分配."); // 个贷客户 + Follow、newFollowUserId loanFlag = jmsBusinessService.modifyLoanUserByTypes(((TextMessage) message).getText()); if (loanFlag) System.out.println("个贷客户状态->有效->已更改为:待分配."); } else // 当消息体为:MapMessage 做出的操作 if (message instanceof MapMessage) { } } catch (JMSException e) { e.printStackTrace(); } } }
相关文章推荐
- Apache ActiveMQ消息中间件的基本使用
- Apache ActiveMQ消息中间件的基本使用
- JMS消息中间件原理及ActiveMQ使用方法
- 【Java消息中间件】Java消息中间件( 第4章 使用activemq - spring jms演示 )
- Apache ActiveMQ消息中间件的基本使用
- Apache apusic---ActiveMQ中间件在JMS1.1、J2EE中的使用
- 使用apache的activemq集合JMS处理异步消息
- Apache ActiveMQ消息中间件的基本使用
- Apache ActiveMQ消息中间件的基本使用
- JMS Apache ActiveMQ使用(1)
- JMS Apache ActiveMQ使用(3)
- 如何使用activemq jms发送和接受消息
- JMS消息中间件之ActiveMQ学习
- ActiveMQ In Action 第二章 理解面向对象的中间件(MOM)和JMS 前言及2.1 介绍企业消息传递
- 理解面向消息中间件及JMS 以及 ActiveMQ例子
- [中间件] 消息处理利器 ActiveMQ 的介绍 & Stomp 协议的使用
- JMS_使用ActiveMQ实现消息的发送和接收
- spring-jms(activemq实现)使用queue发送消息简单例子
- activemq使用JMS发送消息和接收消息
- 理解面向消息中间件及JMS 以及 ActiveMQ例子