AnyEvent-RabbitMQ

 view release on metacpan or  search on metacpan

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

      <field name = "if-empty" domain = "bit" label = "delete only if empty">
        <doc>
          If set, the server will only delete the queue if it has no messages.
        </doc>
        <rule name = "not-empty" on-failure = "precondition-failed">
          <doc>
            The server MUST NOT delete a queue that has messages on it, if the
            if-empty field is true.
          </doc>
          <doc type = "scenario">
            The client declares a queue, binds it and publishes some messages into it,
            then tries to delete it setting if-empty to true.
          </doc>
        </rule>
      </field>

      <field name = "no-wait" domain = "no-wait" />
    </method>

    <method name = "delete-ok" synchronous = "1" index = "41" label = "confirm deletion of a queue">
      <doc>This method confirms the deletion of a queue.</doc>

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

      <field name = "message-count" domain = "message-count">
        <doc>Reports the number of messages deleted.</doc>
      </field>
    </method>
  </class>

  <!-- ==  BASIC  ============================================================ -->

  <class name = "basic" handler = "channel" index = "60" label = "work with basic content">
    <doc>
      The Basic class provides methods that support an industry-standard messaging model.
    </doc>

    <doc type = "grammar">
      basic               = C:QOS S:QOS-OK
                          / C:CONSUME S:CONSUME-OK
                          / C:CANCEL S:CANCEL-OK
                          / C:PUBLISH content
                          / S:RETURN content
                          / S:DELIVER content
                          / C:GET ( S:GET-OK content / S:GET-EMPTY )
                          / C:ACK
                          / S:ACK
                          / C:REJECT
                          / C:NACK
                          / S:NACK
                          / C:RECOVER-ASYNC
                          / C:RECOVER S:RECOVER-OK
    </doc>

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

    <rule name = "01">
      <doc>
        The server SHOULD respect the persistent property of basic messages and
        SHOULD make a best-effort to hold persistent basic messages on a reliable
        storage mechanism.
      </doc>
      <doc type = "scenario">
        Send a persistent message to queue, stop server, restart server and then
        verify whether message is still present.  Assumes that queues are durable.
        Persistence without durable queues makes no sense.
      </doc>
    </rule>

    <rule name = "02">
      <doc>
        The server MUST NOT discard a persistent basic message in case of a queue
        overflow.
      </doc>
      <doc type = "scenario">
        Declare a queue overflow situation with persistent messages and verify that
        messages do not get lost (presumably the server will write them to disk).
      </doc>
    </rule>

    <rule name = "03">
      <doc>
        The server MAY use the Channel.Flow method to slow or stop a basic message
        publisher when necessary.
      </doc>
      <doc type = "scenario">
        Declare a queue overflow situation with non-persistent messages and verify
        whether the server responds with Channel.Flow or not. Repeat with persistent
        messages.
      </doc>
    </rule>

    <rule name = "04">
      <doc>
        The server MAY overflow non-persistent basic messages to persistent
        storage.
      </doc>
      <!-- Test scenario: untestable -->
    </rule>

    <rule name = "05">
      <doc>
        The server MAY discard or dead-letter non-persistent basic messages on a
        priority basis if the queue size exceeds some configured limit.
      </doc>
      <!-- Test scenario: untestable -->
    </rule>

    <rule name = "06">
      <doc>
        The server MUST implement at least 2 priority levels for basic messages,
        where priorities 0-4 and 5-9 are treated as two distinct levels.
      </doc>
      <doc type = "scenario">
        Send a number of priority 0 messages to a queue. Send one priority 9
        message.  Consume messages from the queue and verify that the first message
        received was priority 9.
      </doc>
    </rule>



( run in 1.092 second using v1.01-cache-2.11-cpan-39bf76dae61 )