Message
by viki 2009/12/08
种类
class CMS_API BytesMessage : public Message
class CMS_API MapMessage : public Message
class CMS_API ObjectMessage : public Message
class CMS_API StreamMessage : public Message
class CMS_API TextMessage : public Message
BlobMessage?
实现
class AMQCPP_API ActiveMQMessage : public ActiveMQMessageTemplate<cms::Message>
class AMQCPP_API ActiveMQBlobMessage : public ActiveMQMessageTemplate< cms::Message >
class AMQCPP_API ActiveMQBytesMessage : public ActiveMQMessageTemplate< cms::BytesMessage>
class AMQCPP_API ActiveMQMapMessage : public ActiveMQMessageTemplate<cms::MapMessage>
class AMQCPP_API ActiveMQObjectMessage : public ActiveMQMessageTemplate<cms::ObjectMessag>
class AMQCPP_API ActiveMQStreamMessage : public ActiveMQMessageTemplate< cms::StreamMessag>
class AMQCPP_API ActiveMQTextMessage : public ActiveMQMessageTemplate<cms::TextMessage>
Marshaller 装配器
结构
CMS-specific headers, user-defined properties, and the body.
CMS头,用户定义属性,消息体
消息
消息被创建的时候,或者调用clearBody的时候,消息体为只写模式。
第一次调用reset之后,消息体进入只读模式。
消息被发送之后,发送它的客户端可以取得并且修改它,而不会影响到已经被发送的消息。
同一个消息对象可以被发送多次。当接收到一个消息的时候,提供者调用了reset,所以消息体对于客户端来说是只读的。
如果在只读模式下调用clearBody,消息体会被清空并且进入只写模式。
读写
* A value written as the row type can be read as the column type.
*
* <PRE>
* | | boolean byte short int long float double String
* |----------------------------------------------------------
* |boolean | X X
* |byte | X X X X X
* |short | X X X X
* |int | X X X
* |long | X X
* |float | X X X
* |double | X X
* |String | X X X X X X X X
* |----------------------------------------------------------
* </PRE>
以BytesMessage 为例
一般都会提供各个内置类型的读写方法
有关DeliveryMode
message->setCMSDeliveryMode( deliveryMode );
客户端发送一个消息的时候可以标记其为持久或者非持久。
如果觉得消息在传输中不能被丢失的话可以标记为持久,否则如果允许消息偶尔丢失的话,可以标记为非持久。
这允许提供者折衷平衡消息吞吐量。
投递模式仅仅作用于发送客户端到目标的传输,而不会应用到接受消息的消费者。
接收方可以去掉消息的基础配置,比如内存限制和消息过滤器。
如果投递模式是持久模式并且消息消费者的设置允许的话,消息应该并且只能被投递一次。