I choose to create two separate projects to allow for the greatest flexibility in implementing client or server software.<div><br></div><div>Net::AMQP is a OO representation of the protocol. �It uses the XML spec to dynamically create new classes in a Net::AMQP::Protocol:: namespace. �The chief purpose of this is to (de)serialize the wire-level encoding of AMQP frames and provide convenient OO representation of the frames.</div>

<div><br></div><div>POE::Component::Client::AMQP is an asynchronous client module which establishes the TCP connection to the server and uses Net::AMQP for it&#39;s (de)serialization of the frames. �It has to know some of the basics of the protocol, such as the connection grammar Start/StartOk, Tune/TuneOk, etc (though, now that I think of it, it&#39;s possible this could be moved to Net::AMQP as well). �It uses the data in Net::AMQP to automatically handle synchronous methods and their expected responses and content header building. �Ultimately POE::Component::Client::AMQP offers simply a channel for sending Net::AMQP packets and handling their responses, allowing you to write complex clients without worrying about the details of connecting and the protocol.</div>

<div><br></div><div>POE is a reactor pattern (<a href="http://en.wikipedia.org/wiki/Reactor_pattern" target="_blank">http://en.wikipedia.org/wiki/Reactor_pattern</a>) for Perl. �It is similar to Twisted for Python and EventMachine for Ruby. �Some people aren&#39;t fond of programming with the reactor pattern, as it&#39;s more difficult to track what&#39;s happening�at�any�given�moment,�and�one�can&#39;t�usually�write�linear�code.��For�this�reason,�it&#39;s�likely�that�another�Perl�client�will�be�instituted�(lenz is working on Net::AMQP::Simple) that will probably use IO::Socket directly.</div>
<div><br></div><div>Eric<br>
<br><div class="gmail_quote">On Wed, Jul 15, 2009 at 2:41 AM, Alexis Richardson <span dir="ltr">&lt;<a href="mailto:alexis.richardson@gmail.com" target="_blank">alexis.richardson@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

Eric<br>
<br>
Thanks for this. �I&#39;m not familiar with Perl so please can you explain<br>
how the two projects relate to each other? �Should they always be used<br>
together?<br>
<font color="#888888"><br>
alexis<br>
</font><div><div></div><div><br>
<br>
On Sat, Jul 11, 2009 at 12:06 AM, Eric Waters&lt;<a href="mailto:ewaters@gmail.com" target="_blank">ewaters@gmail.com</a>&gt; wrote:<br>
&gt; I&#39;ll avoid talking about something that&#39;s not specific to<br>
&gt; RabbitMQ�in�this�forum in the<br>
&gt; future,�but�wanted�to�mention�this�as�a�follow�up�to�a�post�earlier�this�week.<br>
&gt; I�now�have�functioning�code�released�for�Net::AMQP�and�POE::Component::Client::AMQP.��Tested�it�against�RabbitMQ�1.6.0.��Get�it�from�<a href="http://github.com/ewaters" target="_blank">http://github.com/ewaters</a>.��You&#39;ll�need�to�clone�both�repositories<br>


&gt; to run the example pingpong.pl program (idea copied from ruby-amqp).<br>
&gt; To try it out, clone both projects into the same directory, cd into<br>
&gt; poe-component-client-amqp, and run:<br>
&gt; ��DEBUG=0 perl -Ilib -I../net-amqp/lib examples/pingpong.pl<br>
&gt; ../net-amqp/spec/amqp0-8.xml<br>
&gt; If you&#39;d like to see the full protocol debug, change DEBUG=1.<br>
&gt; The�perl�modules�are�fully�documented�in�POD. �If anyone is interested, I&#39;d<br>
&gt; love for collaboration on the project. �Drop me a line with your github<br>
&gt; username and I&#39;ll add you as a github collaborator.<br>
&gt; Sorry for the interruption. �Back to your regularly scheduled RabbitMQ<br>
&gt; programming. �:)<br>
&gt; Eric<br>
</div></div><div><div></div><div>&gt; _______________________________________________<br>
&gt; rabbitmq-discuss mailing list<br>
&gt; <a href="mailto:rabbitmq-discuss@lists.rabbitmq.com" target="_blank">rabbitmq-discuss@lists.rabbitmq.com</a><br>
&gt; <a href="http://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss" target="_blank">http://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss</a><br>
&gt;<br>
&gt;<br>
</div></div></blockquote></div><br></div>