summaryrefslogtreecommitdiff
path: root/documentation/content/xdocs/AMQP0-9-DesignNotes.html
blob: f225d9184865dc6bbe2ed982c7240219d9e46023 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<html>
    <head>
        <title>Apache Qpid : AMQP0-9-DesignNotes</title>
	    <link rel="stylesheet" href="styles/site.css" type="text/css" />
        <META http-equiv="Content-Type" content="text/html; charset=UTF-8">	    
    </head>

    <body>
	    <table class="pagecontent" border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="#ffffff">
		    <tr>
			    <td valign="top" class="pagebody">
				    <div class="pageheader">
					    <span class="pagetitle">
                            Apache Qpid : AMQP0-9-DesignNotes
                                                    </span>
				    </div>
				    <div class="pagesubheading">
					    This page last changed on Jan 30, 2007 by <font color="#0050B2">kpvdr</font>.
				    </div>

				    <h2><a name="AMQP0-9-DesignNotes-DesignnotesforAMQP09implemenation"></a>Design notes for AMQP 0-9 implemenation</h2>

<ul>
	<li>Reserved field in Request frame must be set to 0.</li>
	<li>Request and Response constants were added to amqp.0-9.xml</li>
	<li>Request ID and Response ID must start at 1 for new channels. 0 is reserved for future use, and should not be used in normal interactions between client and server.</li>
	<li>Response Mark must start at 0 for new channels.</li>
	<li>Content class encoding: For inline messages (first byte = 0), a null or empty byte array may be used.</li>
	<li>Content class encoding: For refs, (first byte = 1), an error or exception must be thrown if the byte array is either null or empty. It makes no sense to send a null ref.</li>
	<li>Content class decoding: For inline messages (first byte = 0), is is not possible to discriminate between the null array or empty array case above that encoded it. Decode as an empty byte array, not a null. (open for discussion)</li>
	<li>Content class: It may be possible to set a value for either/or null and empty values in the future - if a use-case can be made for it</li>
	<li>Possible batch-handling modes should be decided upon.</li>
	<li>TODO: Devise a mechanism to allow one-way requests, where no acknowledgements are sent.</li>
</ul>


<h2><a name="AMQP0-9-DesignNotes-AMQP09SpecificationIssues"></a>AMQP 0-9 Specification Issues</h2>
<ul>
	<li>Errara will be made by adding to an amqp-errata.0-9.xml file rather than by making edits directly to the specification file. These are the advantages:
	<ul>
		<li>The differences between the current specification and the spec as we use it are readily apparent.</li>
		<li>Different implementations share the same specification file. Thus errors that may arise as a result of a change required for one implementation (e.g. Java) on others (e.g. C++) are controled/eliminated.</li>
	</ul>
	</li>
	<li>Two constants are missing and need to be inserted as an erratum:
<div class="preformatted"><div class="preformattedContent">
<pre> &lt;constant name = "frame-request"    value = "9" /&gt;
 &lt;constant name = "frame-response"   value = "10" /&gt;
</pre>
</div></div></li>
	<li>The Basic field <font color="blue"><tt>Basic.type</tt></font> (a <tt>shortstr</tt>) was omitted from <font color="blue"><tt>Message.transfer</tt></font>. However, after some discussion it was resolved that since thid field serves JMS messaging only, that it should be handled as a custom property rather than creating an XML erratum to insert it. The property name is "<font color="blue"><b><tt>JMSXType</tt></b></font>".</li>
	<li>The Basic field <font color="blue"><tt>Basic.mandatory</tt></font>(a <tt>bit</tt>) was originally omitted form <font color="blue"><tt>Message.transfer</tt></font> because its functionality would have been handled by the availability of dead-letter queues. However, they did not make it into the AMQP 0-9 speicification. Thus, <font color="blue"><tt>Basic.mandatory</tt></font> has been temporarily added as the last field in <font color="blue"><tt>Message.transfer</tt></font> until dead-letter queues become a reality in the specification.</li>
</ul>


				    
                    			    </td>
		    </tr>
	    </table>
	    <table border="0" cellpadding="0" cellspacing="0" width="100%">
			<tr>
				<td height="12" background="border/border_bottom.gif"><img src="border/spacer.gif" width="1" height="1" border="0"/></td>
			</tr>
		    <tr>
			    <td align="center"><font color="grey">Document generated by Confluence on Apr 22, 2008 02:47</font></td>
		    </tr>
	    </table>
    </body>
</html>