activemq复习1

Posted liuyi13535496566

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了activemq复习1相关的知识,希望对你有一定的参考价值。

一.JMS组成的四大元素

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

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

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

4.JMS message 它又包含3部分,消息头,消息属性 ,消息体


 

消息头5大常用

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

2.JMSDeliveryMode  持久模式和非持久模式,一条持久性的消息:应该被传送“一次仅仅一次”,这就意味着如果JMS提供者出现故障,该消息并不会丢失,它会在服务器恢复之后再次传递

一条非持久化的消息,最多会传送一次,这意味着如果服务器出现故障,该消息将永远丢失

3.JMSExpiration  可以设置消息在一定时间后过期,默认是永不过期,消息过期时间,等于Destination 的send 方法中的timeToLive值加上发送时刻的GMT时间值,如果timeToLive值等于零,则JMSExpiration被设为零,表示该消息永不过期。如果发送后,在消息过期时间后消息还没有被发送到目的地,则该消息被清除

4.JMSPriority   消息优先级,从0-9十个级别,0到4是普通消息,5到9是加急消息。JMS不要求MQ严格按照这十个优先级发送消息,但必须保证加急消息要先于普通消息到达,默认是4级。

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

 

5种消息体格式

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

2.MapMessage  一个Map类型的消息,key为String,而值为java对象

3.BytesMessage 二进制数组消息,包含一个byte[]

4.StreamMessage Java数据流消息,用标准流操作来顺序的填充

5.ObjectMessage 对象消息,包含一个可序列化的操作对象

 

消息属性

1.如果需要除消息头字段以外的值,那么可以使用消息属性。识别/去重/重点标注等操作非常有用的方法

他们是以属性明和属性值对的形式制定的,可以将属性是为消息头的扩展,属性指定一些消息头没有包括的附加信息,比如可以在属性李指定消息选择器。消息的属性就像可以分配给一条消息的附加消息头一样,它们允许开发者添加有关消息的不透明附加信息,它们还用于暴露消息选择器在消息过滤时使用的数据

TextMessage message = session.createTextMessage();
message.setText(text);
message.setStringProperty("username","z3"); 自定义属性


队列的持久性

1.非持久 messageProducer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
               非持久化:当服务器宕机,消息不存在

2.持久  messageProducer.setDeliveryMode(DeliveryMode.PERSISTENT);
    持久化:当服务器宕机,消息仍然存在

默认是持久化的

 

持久化的topic

1.一定要先运行一次消费者,等于向MQ注册,类似我订阅了这个主题

2.然后再运行生产者发送信息,此时,无论消费者是否在线,都会接收到,不在线的话,下次连接的时候,会把没有收过的消息都接收下来。

以上是关于activemq复习1的主要内容,如果未能解决你的问题,请参考以下文章

探索ActiveMq

消息队列 ActiveMQ

消息队列 ActiveMQ

消息中间件之ActiveMQ之一

activemq复习1

activeMQ学习---------点对点发布订阅的消息代码实现