---
name: "Net::AMQP"
section: "3pm"
platform: "linux"
package: "libnet-amqp-perl"
version: "0.06~dfsg-4"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Net::AMQP"
---

# Net::AMQP(3pm)

Advanced Message Queue Protocol (de)serialization and representation

## NAME

Net::AMQP - Advanced Message Queue Protocol (de)serialization and representation

## SYNOPSIS

```
  use Net::AMQP;
  Net::AMQP::Protocol->load_xml_spec('amqp0-8.xml');
  ...
  my @frames = Net::AMQP->parse_raw_frames(\$input);

  ...
  foreach my $frame (@frames) {
      if ($frame->can('method_frame') && $frame->method_frame->isa('Net::AMQP::Protocol::Connection::Start')) {
          my $output = Net::AMQP::Frame::Method->new(
              channel => 0,
              method_frame => Net::AMQP::Protocol::Connection::StartOk->new(
                  client_properties => { ... },
                  mechanism         => 'AMQPLAIN',
                  locale            => 'en_US',
                  response          => {
                      LOGIN    => 'guest',
                      PASSWORD => 'guest',
                  },
              ),
          );
          print OUT $output->to_raw_frame();
      }
  }
```

## DESCRIPTION

This module implements the frame (de)serialization and representation of the Advanced Message Queue Protocol (http://www.amqp.org/).  It is to be used in conjunction with client or server software that does the actual TCP/IP communication.

## CLASS METHODS

### parse\_raw\_frames

```
  Net::AMQP->parse_raw_frames(\$binary_payload)
```

Given a scalar reference to a binary string, return a list of Net::AMQP::Frame objects, consuming the data in the string.  Croaks on invalid input.

## SEE ALSO

Net::AMQP::Value, Net::RabbitMQ, AnyEvent::RabbitMQ, Net::RabbitFoot, POE::Component::Client::AMQP

## AMQP VERSIONS

AMQP 0-8 is fully supported.

AMQP 0-9, 0-9-1, and 0-10 are usably supported.  There are interoperability issues with table encodings because the standard disagrees with the dialects of major implementations (RabbitMQ and Qpid).  For now, Net::AMQP limits itself to universally agreed table elements.  See \<http://www.rabbitmq.com/amqp-0-9-1-errata.html\> for details.

AMQP 1.0 has not been tested.

## TODO

Address the dialect problem, either via modified spec files that completely control the wire protocol, or by programmatic request.  The former has precedent (viz "qpid.amqp0-8.xml" in spec), but could cause a combinatorial explosion as more brokers and versions are added.  The latter adds interface complexity.

## QUOTES

"All problems in computer science can be solved by another level of indirection." -- David Wheeler's observation

"...except for the problem of too many layers of indirection." -- Kevlin Henney's corollary

## COPYRIGHT

Copyright (c) 2009 Eric Waters and XMission LLC (http://www.xmission.com/). Copyright (c) 2012, 2013 Chip Salzenberg and Topsy Labs (http://labs.topsy.com/). All rights reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.  The full text of the license can be found in the LICENSE file included with this module.

## AUTHOR

Eric Waters \<ewaters@gmail.com\>
