AnyEvent-RabbitMQ

 view release on metacpan or  search on metacpan

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


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

    <method name = "qos" synchronous = "1" index = "10" label = "specify quality of service">
      <doc>
        This method requests a specific quality of service. The QoS can be specified for the
        current channel or for all channels on the connection. The particular properties and
        semantics of a qos method always depend on the content class semantics. Though the
        qos method could in principle apply to both peers, it is currently meaningful only
        for the server.
      </doc>

      <chassis name = "server" implement = "MUST" />
      <response name = "qos-ok" />

      <field name = "prefetch-size" domain = "long" label = "prefetch window in octets">
        <doc>
          The client can request that messages be sent in advance so that when the client
          finishes processing a message, the following message is already held locally,
          rather than needing to be sent down the channel. Prefetching gives a performance
          improvement. This field specifies the prefetch window size in octets. The server
          will send a message in advance if it is equal to or smaller in size than the
          available prefetch size (and also falls into other prefetch limits). May be set
          to zero, meaning "no specific limit", although other prefetch limits may still
          apply. The prefetch-size is ignored if the no-ack option is set.
        </doc>
        <rule name = "01">
          <doc>
            The server MUST ignore this setting when the client is not processing any
            messages - i.e. the prefetch size does not limit the transfer of single
            messages to a client, only the sending in advance of more messages while
            the client still has one or more unacknowledged messages.
          </doc>
          <doc type = "scenario">
            Define a QoS prefetch-size limit and send a single message that exceeds
            that limit.  Verify that the message arrives correctly.
          </doc>
        </rule>
      </field>

      <field name = "prefetch-count" domain = "short" label = "prefetch window in messages">
        <doc>
          Specifies a prefetch window in terms of whole messages. This field may be used
          in combination with the prefetch-size field; a message will only be sent in
          advance if both prefetch windows (and those at the channel and connection level)
          allow it. The prefetch-count is ignored if the no-ack option is set.
        </doc>
        <rule name = "01">
          <doc>
            The server may send less data in advance than allowed by the client's
            specified prefetch windows but it MUST NOT send more.
          </doc>
          <doc type = "scenario">
            Define a QoS prefetch-size limit and a prefetch-count limit greater than
            one.  Send multiple messages that exceed the prefetch size.  Verify that
            no more than one message arrives at once.
          </doc>
        </rule>
      </field>

      <field name = "global" domain = "bit" label = "apply to entire connection">
        <doc>
          By default the QoS settings apply to the current channel only. If this field is
          set, they are applied to the entire connection.
        </doc>
      </field>
    </method>

    <method name = "qos-ok" synchronous = "1" index = "11" label = "confirm the requested qos">
      <doc>
        This method tells the client that the requested QoS levels could be handled by the
        server. The requested QoS applies to all active consumers until a new QoS is
        defined.
      </doc>
      <chassis name = "client" implement = "MUST" />
    </method>

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

    <method name = "consume" synchronous = "1" index = "20" label = "start a queue consumer">
      <doc>
        This method asks the server to start a "consumer", which is a transient request for
        messages from a specific queue. Consumers last as long as the channel they were
        declared on, or until the client cancels them.
      </doc>

      <rule name = "01">
        <doc>
          The server SHOULD support at least 16 consumers per queue, and ideally, impose
          no limit except as defined by available resources.
        </doc>
        <doc type = "scenario">
          Declare a queue and create consumers on that queue until the server closes the
          connection. Verify that the number of consumers created was at least sixteen
          and report the total number.
        </doc>
      </rule>

      <chassis name = "server" implement = "MUST" />
      <response name = "consume-ok" />

      <!-- Deprecated: "ticket", must be zero -->
      <field name = "reserved-1" type = "short" reserved = "1" />

      <field name = "queue" domain = "queue-name">
        <doc>Specifies the name of the queue to consume from.</doc>
      </field>

      <field name = "consumer-tag" domain = "consumer-tag">
        <doc>
          Specifies the identifier for the consumer. The consumer tag is local to a
          channel, so two clients can use the same consumer tags. If this field is
          empty the server will generate a unique tag.
        </doc>
        <rule name = "01" on-failure = "not-allowed">
          <doc>
            The client MUST NOT specify a tag that refers to an existing consumer.
          </doc>
          <doc type = "scenario">
            Attempt to create two consumers with the same non-empty tag, on the
            same channel.



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