AnyEvent-RabbitMQ

 view release on metacpan or  search on metacpan

share/fixed_amqp0-9-1.xml  view on Meta::CPAN

      <chassis name = "client" implement = "MAY" />

      <field name = "delivery-tag" domain = "delivery-tag" />
      <field name = "redelivered" domain = "redelivered" />
      <field name = "exchange" domain = "exchange-name">
        <doc>
          Specifies the name of the exchange that the message was originally published to.
          If empty, the message was published to the default exchange.
        </doc>
      </field>

      <field name = "routing-key" domain = "shortstr" label = "Message routing key">
        <doc>Specifies the routing key name specified when the message was published.</doc>
      </field>

      <field name = "message-count" domain = "message-count" />
    </method>

    <method name = "get-empty" synchronous = "1" index = "72"
      label = "indicate no messages available">
      <doc>
        This method tells the client that the queue has no messages available for the
        client.
      </doc>
      <chassis name = "client" implement = "MAY" />
      <!-- Deprecated: "cluster-id", must be empty -->
      <field name = "reserved-1" type = "shortstr" reserved = "1" />
    </method>

    <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->

    <method name = "ack" index = "80" label = "acknowledge one or more messages">
      <doc>
        When sent by the client, this method acknowledges one or more
        messages delivered via the Deliver or Get-Ok methods.

        When sent by server, this method acknowledges one or more
        messages published with the Publish method on a channel in
        confirm mode.

        The acknowledgement can be for a single message or a set of
        messages up to and including a specific message.
      </doc>

      <chassis name = "server" implement = "MUST" />
      <chassis name ="client" implement = "MUST"/>

      <field name = "delivery-tag" domain = "delivery-tag" />
      <field name = "multiple" domain = "bit" label = "acknowledge multiple messages">
        <doc>
          If set to 1, the delivery tag is treated as "up to and
          including", so that multiple messages can be acknowledged
          with a single method. If set to zero, the delivery tag
          refers to a single message. If the multiple field is 1, and
          the delivery tag is zero, this indicates acknowledgement of
          all outstanding messages.
        </doc>
        <rule name = "exists" on-failure = "precondition-failed">
          <doc>
            A message MUST not be acknowledged more than once.  The
            receiving peer MUST validate that a non-zero delivery-tag
            refers to a delivered message, and raise a channel
            exception if this is not the case. On a transacted
            channel, this check MUST be done immediately and not
            delayed until a Tx.Commit.
          </doc>
          <doc type = "scenario">
            TODO.
          </doc>
        </rule>
      </field>
    </method>

    <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->

    <method name = "reject" index = "90" label = "reject an incoming message">
      <doc>
        This method allows a client to reject a message. It can be used to interrupt and
        cancel large incoming messages, or return untreatable messages to their original
        queue.
      </doc>

      <rule name = "01">
        <doc>
          The server SHOULD be capable of accepting and process the Reject method while
          sending message content with a Deliver or Get-Ok method. I.e. the server should
          read and process incoming methods while sending output frames. To cancel a
          partially-send content, the server sends a content body frame of size 1 (i.e.
          with no data except the frame-end octet).
        </doc>
      </rule>

      <rule name = "02">
        <doc>
          The server SHOULD interpret this method as meaning that the client is unable to
          process the message at this time.
        </doc>
        <doc type = "scenario">
          TODO.
        </doc>
      </rule>

      <rule name = "03">
        <doc>
          The client MUST NOT use this method as a means of selecting messages to process.
        </doc>
        <doc type = "scenario">
          TODO.
        </doc>
      </rule>

      <chassis name = "server" implement = "MUST" />

      <field name = "delivery-tag" domain = "delivery-tag" />

      <field name = "requeue" domain = "bit" label = "requeue the message">
        <doc>
          If requeue is true, the server will attempt to requeue the message.  If requeue
          is false or the requeue  attempt fails the messages are discarded or dead-lettered.
        </doc>

share/fixed_amqp0-9-1.xml  view on Meta::CPAN

        confirm mode of unhandled messages.  If a publisher receives this method, it
        probably needs to republish the offending messages.
      </doc>

      <rule name = "01">
        <doc>
          The server SHOULD be capable of accepting and processing the Nack method while
          sending message content with a Deliver or Get-Ok method. I.e. the server should
          read and process incoming methods while sending output frames. To cancel a
          partially-send content, the server sends a content body frame of size 1 (i.e.
          with no data except the frame-end octet).
        </doc>
      </rule>

      <rule name = "02">
        <doc>
          The server SHOULD interpret this method as meaning that the client is unable to
          process the message at this time.
        </doc>
        <doc type = "scenario">
          TODO.
        </doc>
      </rule>

      <rule name = "03">
        <doc>
          The client MUST NOT use this method as a means of selecting messages to process.
        </doc>
        <doc type = "scenario">
          TODO.
        </doc>
      </rule>

      <rule name = "04">
        <doc>
          A client publishing messages to a channel in confirm mode SHOULD be capable of accepting
          and somehow handling the Nack method.
        </doc>
        <doc type = "scenario">
          TODO
        </doc>
      </rule>

      <chassis name = "server" implement = "MUST" />
      <chassis name = "client" implement = "MUST" />

      <field name = "delivery-tag" domain = "delivery-tag" />

      <field name = "multiple" domain = "bit" label = "reject multiple messages">
        <doc>
          If set to 1, the delivery tag is treated as "up to and
          including", so that multiple messages can be rejected
          with a single method. If set to zero, the delivery tag
          refers to a single message. If the multiple field is 1, and
          the delivery tag is zero, this indicates rejection of
          all outstanding messages.
        </doc>
        <rule name = "exists" on-failure = "precondition-failed">
          <doc>
            A message MUST not be rejected more than once.  The
            receiving peer MUST validate that a non-zero delivery-tag
            refers to an unacknowledged, delivered message, and
            raise a channel exception if this is not the case.
          </doc>
          <doc type = "scenario">
            TODO.
          </doc>
        </rule>
      </field>

      <field name = "requeue" domain = "bit" label = "requeue the message">
        <doc>
          If requeue is true, the server will attempt to requeue the message.  If requeue
          is false or the requeue  attempt fails the messages are discarded or dead-lettered.
          Clients receiving the Nack methods should ignore this flag.
        </doc>

        <rule name = "01">
          <doc>
            The server MUST NOT deliver the message to the same client within the
            context of the current channel. The recommended strategy is to attempt to
            deliver the message to an alternative consumer, and if that is not possible,
            to move the message to a dead-letter queue. The server MAY use more
            sophisticated tracking to hold the message on the queue and redeliver it to
            the same client at a later stage.
          </doc>
          <doc type = "scenario">
            TODO.
          </doc>
        </rule>
      </field>
    </method>

  </class>

  <!-- ==  TX  =============================================================== -->

  <class name = "tx" handler = "channel" index = "90" label = "work with transactions">
    <doc>
      The Tx class allows publish and ack operations to be batched into atomic
      units of work.  The intention is that all publish and ack requests issued
      within a transaction will complete successfully or none of them will.
      Servers SHOULD implement atomic transactions at least where all publish
      or ack requests affect a single queue.  Transactions that cover multiple
      queues may be non-atomic, given that queues can be created and destroyed
      asynchronously, and such events do not form part of any transaction.
      Further, the behaviour of transactions with respect to the immediate and
      mandatory flags on Basic.Publish methods is not defined.
    </doc>

    <rule name = "not multiple queues">
      <doc>
      Applications MUST NOT rely on the atomicity of transactions that
      affect more than one queue.
      </doc>
    </rule>
    <rule name = "not immediate">
      <doc>
      Applications MUST NOT rely on the behaviour of transactions that
      include messages published with the immediate option.
      </doc>



( run in 0.847 second using v1.01-cache-2.11-cpan-140bd7fdf52 )