天天看點

[七]RabbitMQ-用戶端源碼之AMQPImpl+Method

AMQPImpl類包括AMQP接口(public class AMQImpl implements AMQP)主要囊括了AMQP協定中的通信幀的類别。

這裡以Connection.Start幀做一個例子。

可以看到Start類是Connection類的内部靜态子類,表示此Start類為Connection.Start,而且Start類是繼承Method方法的,包括接下來所有的AMQP協定幀都是繼承這個Method方法,Method可以看成用來區分AMQP協定幀的類型。

Method類是一個抽象類(Base class for AMQP method objects, specialized by autogenerated code in AMQP.java),我們來看下Method類的代碼:

代碼不長。挑幾個解釋下。

protocolClassId()和protocolMethodId():每一個Method(Connection.Start/.StartOk, Connection.Tune/.TuneOk等等)都包含classId和methodId,可以參考下圖:

[七]RabbitMQ-用戶端源碼之AMQPImpl+Method

protocolMethodName()傳回本Method的名稱,比如Connection.Start的就是:

boolean hasContent()用來區分這個Method之後是否有Content-Body,比如Connection.Start的為:

又比如Basic.Publish的為:

好了,這裡可以回來接着講AMQPImpl了。

下面是一張表,用來涵蓋AQMP協定各個種類的Method以及其一些屬性,看完這張表就看完了AMQPImpl的全部。

Method-Name

classId

methodId

hasContent

Connection.Start

10

false

Connection.StartOk

11

Connection.Secure

20

Connection.SecureOk

21

Connection.Tune

30

Connection.TuneOk

31

Connection.Open

40

Connection.OpenOk

41

Connection.Close

50

Connection.CloseOk

51

Connection.Blocked

60

Connection.Unblocked

61

Channel.Open

Channel.OpenOk

Channel.Flow

Channel.FlowOk

Channel.Close

Channel.CloseOk

Access.Request

Access.RequestOk

Exchange.Declare

Exchange.DeclareOk

Exchange.Delete

Exchange.DeleteOk

Exchange.Bind

Exchange.BindOk

Exchange.Unbind

Exchange.UnbindOk

Queue.Declare

Queue.DeclareOk

Queue.Bind

Queue.BindOk

Queue.Purge

Queue.PurgeOk

Queue.Delete

Queue.DeleteOk

Queue.Unbind

Queue.UnbindOk

Basic.Qos

Basic.QosOk

Basic.Consume

Basic.ConsumeOk

Basic.Cancel

Basic.CancelOk

Basic.Publish

true

Basic.Return

Basic.Deliver

Basic.Get

70

Basic.GetOk

71

Basic.GetEmpty

72

Basic.Ack

80

Basic.Reject

90

Basic.RecoverAsync

100

Basic.Recover

110

Basic.RecoverOk

111

Basic.Nack

120

Tx.Select

Tx.SelectOk

Tx.Commit

Tx.CommitOk

Tx.Rollback

Tx.RollbackOk

Confirm.Select

85

Confirm.SelectOk

<a href="http://blog.csdn.net/u013256816/article/details/70214929">[Conclusion]RabbitMQ-用戶端源碼之總結</a>

<a href="http://blog.csdn.net/u013256816/article/details/70214708">[一]RabbitMQ-用戶端源碼之ConnectionFactory</a>

<a href="http://blog.csdn.net/u013256816/article/details/70214730">[二]RabbitMQ-用戶端源碼之AMQConnection</a>

<a href="http://blog.csdn.net/u013256816/article/details/70214754">[三]RabbitMQ-用戶端源碼之ChannelManager</a>

<a href="http://blog.csdn.net/u013256816/article/details/70214776">[四]RabbitMQ-用戶端源碼之Frame</a>

<a href="http://blog.csdn.net/u013256816/article/details/70214791">[五]RabbitMQ-用戶端源碼之AMQChannel</a>

<a href="http://blog.csdn.net/u013256816/article/details/70214811">[六]RabbitMQ-用戶端源碼之AMQCommand</a>

<a href="http://blog.csdn.net/u013256816/article/details/70214835">[七]RabbitMQ-用戶端源碼之AMQPImpl+Method</a>

<a href="http://blog.csdn.net/u013256816/article/details/70214863">[八]RabbitMQ-用戶端源碼之ChannelN</a>

<a href="http://blog.csdn.net/u013256816/article/details/70214903">[九]RabbitMQ-用戶端源碼之Consumer</a>