首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

JMS,ActiveMQ 内部兑现的研究

2012-11-04 
JMS,ActiveMQ 内部实现的研究问题1,JMS,ActiveMQ的发送消息原理。比如,发送者发送一个TextMessage对象通过J

JMS,ActiveMQ 内部实现的研究
问题1,JMS,ActiveMQ的发送消息原理。
比如,发送者发送一个TextMessage对象通过JMS中间件发送到JMS server,JMS server如何拿到这个TextMessage,TextMessage在整个流程中做了哪些处理。

TextMessage的内部处理 (针对TCP OpenFire 协议)
org.apache.activemq.openwire.v1.MessageMarshaller
org.apache.activemq.openwire.v1.BaseCommandMarshaller
这两个类完成Object到bytes的转换。


ActiveMQ 将TextMessage里的text转成byte流,使用socket方式发送二进制流。其中会调用:
org.apache.activemq.command.ActiveMQTextMessage.beforeMarshall(WireFormat wireFormat)

TextMessage中的text转成byte流会调用其中下面一个方法

org.apache.activemq.command.ActiveMQTextMessage.getText() org.apache.activemq.openwire.v1.BaseDataStreamMarshaller.tightUnmarshalByteSequence(DataInput dataIn, BooleanStream bs)protected ByteSequence tightUnmarshalByteSequence(DataInput dataIn, BooleanStream bs) throws IOException {        ByteSequence rc = null;        if (bs.readBoolean()) {            int size = dataIn.readInt();            byte[] t = new byte[size];            dataIn.readFully(t);            return new ByteSequence(t, 0, size);        }        return rc;    }




热点排行