眼睛斜视

注册

 

发新话题 回复该主题

一篇文章让你了解JMS以及中间件之Act [复制链接]

1#
JMS(JavaMessageService)JMS的组成特点

JMSprovider

实现JMS接口和规范的消息中间件,也就是我们的MQ服务器

JMSproducer

消息生产者创建和发送JMS消息的客户端应用

JMSconsumer

消息消费者,接收和处理JMS消息的客户端应用

JMSmessage

消息头

JMSDestination

消息发送的目的地,主要是指Queue和Topic

JMSDeliverMode

持久模式和非持久模式

一条持久性的消息:应该被传送"一次仅仅一次",这就意味着如果JMS提供者出现故障,该消息并不会丢失,它会在服务器恢复之前再次传递

一条非持久性消息:最多会传送一次,这就意味着服务器出现故障,该消息将永远消失

JMSExpiration

过期时间默认永不过期

JMSPriority

优先级0-9十个级别,0-4是普通消息5-9是加急消息

JMS不要求MQ严格按照这十个优先级来发送消息,但必须保证加急消息要优先于普通消息默认4级

JMSMessageID(幂等性会用到)

唯一识别每个消息的标识由MQ产生

消息体

发送和接收的消息体类型必须一直对应

封装具体的消息数据

5种消息体格式

TextMessage

普通字符串消息,包含一个String

MapMessage

一个Map类型的消息,key为Srting类型,而值为Java的基本类型

BytesMessage

二进制组消息,包含一个byte[]

StreamMessage

Java数据流消息,用标准流操作来顺序的填充和读取

ObjectMessage

对象消息,包含一个可序列化的Java对象

消息属性

如果需要除消息头字段外的值,那么可以使用消息属性

识别/去重/重点标注等操作非常有用的方法

JMS的可靠性(事务)

PERSISTENT:持久性

参数设置(队列默认持久)

非持久:messageProducer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);

非持久化:当服务器宕机,消息不存在

持久:messageProducer.setDeliveryMode(DeliveryMode.PERSISTENT);

持久化:当服务器宕机,消息依然存在

持久性的Queue

持久的Topic

Transacction事务:

false

true

只要执行send,就进入到队列中。

关闭事务,那第2个签收参数的设置需要有效

先执行send再执行

分享 转发
TOP
发新话题 回复该主题