<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/class.stomp.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'es',
  ),
  'this' => 
  array (
    0 => 'stomp.ack.php',
    1 => 'Stomp::ack',
    2 => 'Confirmar la recepci&oacute;n y el consumo de un mensaje',
  ),
  'up' => 
  array (
    0 => 'class.stomp.php',
    1 => 'Stomp',
  ),
  'prev' => 
  array (
    0 => 'stomp.abort.php',
    1 => 'Stomp::abort',
  ),
  'next' => 
  array (
    0 => 'stomp.begin.php',
    1 => 'Stomp::begin',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'es',
    'path' => 'reference/stomp/stomp/ack.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="stomp.ack" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">Stomp::ack</h1>
  <h1 class="refname">stomp_ack</h1>
  <p class="verinfo">(PECL stomp &gt;= 0.1.0)</p><p class="refpurpose"><span class="refname">Stomp::ack</span> -- <span class="refname">stomp_ack</span> &mdash; <span class="dc-title">Confirmar la recepción y el consumo de un mensaje</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-stomp.ack-description">
  <h3 class="title">Descripción</h3>
  <p class="simpara">Estilo orientado a objetos (método):</p>
   <div class="methodsynopsis dc-description">
   <span class="modifier">public</span> <span class="modifier">function</span> <span class="methodname"><strong>Stomp::ack</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.mixed.php" class="type mixed">mixed</a></span> <code class="parameter">$msg</code></span>, <span class="methodparam"><span class="type"><a href="language.types.array.php" class="type array">array</a></span> <code class="parameter">$headers</code><span class="initializer"> = ?</span></span>): <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span></div>

  <p class="simpara">Estilo procedimental:</p>
  <div class="methodsynopsis dc-description"><span class="modifier">function</span> <span class="methodname"><strong>stomp_ack</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.resource.php" class="type resource">resource</a></span> <code class="parameter">$link</code></span>, <span class="methodparam"><span class="type"><a href="language.types.mixed.php" class="type mixed">mixed</a></span> <code class="parameter">$msg</code></span>, <span class="methodparam"><span class="type"><a href="language.types.array.php" class="type array">array</a></span> <code class="parameter">$headers</code><span class="initializer"> = ?</span></span>): <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span></div>

  <p class="simpara">
   Confirmar el consumo de un mensaje desde una suscripción enviando el cliente una trama ACK de confirmación.
  </p>
 </div>


 <div class="refsect1 parameters" id="refsect1-stomp.ack-parameters">
  <h3 class="title">Parámetros</h3>
  <dl>
   <dt><code class="parameter">link</code></dt><dd><span class="simpara">Estilo procedimental únicamente: El identificador stomp devuelto por la función<span class="function"><a href="stomp.construct.php" class="function">stomp_connect()</a></span>.</span></dd>
   
    <dt><code class="parameter">msg</code></dt>
    <dd>
     <span class="simpara">
      El mensaje/Id del mensaje a ser confirmado.
     </span>
    </dd>
   
   <dt><code class="parameter">headers</code></dt><dd><span class="simpara">Array asociativo que contiene los encabezados adicionales (ejemplo: receipt).</span></dd>
  </dl>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-stomp.ack-returnvalues">
  <h3 class="title">Valores devueltos</h3>
  <p class="simpara">
   Esta función retorna <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> en caso de éxito o <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> si ocurre un error.
  </p>
 </div>


 <div class="refsect1 examples" id="refsect1-stomp.ack-examples">
  <h3 class="title">Ejemplos</h3>
  <div class="example" id="example-1">
   <p><strong>Ejemplo #1 Estilo orientado a objetos</strong></p>
   <div class="example-contents">
<div class="phpcode"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php

$queue  </span><span style="color: #007700">= </span><span style="color: #DD0000">'/queue/foo'</span><span style="color: #007700">;
</span><span style="color: #0000BB">$msg    </span><span style="color: #007700">= </span><span style="color: #DD0000">'bar'</span><span style="color: #007700">;

</span><span style="color: #FF8000">/* conexión */
</span><span style="color: #007700">try {
    </span><span style="color: #0000BB">$stomp </span><span style="color: #007700">= new </span><span style="color: #0000BB">Stomp</span><span style="color: #007700">(</span><span style="color: #DD0000">'tcp://localhost:61613'</span><span style="color: #007700">);
} catch(</span><span style="color: #0000BB">StompException $e</span><span style="color: #007700">) {
    die(</span><span style="color: #DD0000">'Connection failed: ' </span><span style="color: #007700">. </span><span style="color: #0000BB">$e</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getMessage</span><span style="color: #007700">());
}

</span><span style="color: #FF8000">/* enviar un mensaje a la cola 'foo' */
</span><span style="color: #0000BB">$stomp</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">send</span><span style="color: #007700">(</span><span style="color: #0000BB">$queue</span><span style="color: #007700">, </span><span style="color: #0000BB">$msg</span><span style="color: #007700">);

</span><span style="color: #FF8000">/* suscribirse a mensajes de la cola 'foo' */
</span><span style="color: #0000BB">$stomp</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">subscribe</span><span style="color: #007700">(</span><span style="color: #0000BB">$queue</span><span style="color: #007700">);

</span><span style="color: #FF8000">/* leer una trama */
</span><span style="color: #0000BB">$frame </span><span style="color: #007700">= </span><span style="color: #0000BB">$stomp</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">readFrame</span><span style="color: #007700">();

if (</span><span style="color: #0000BB">$frame</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">body </span><span style="color: #007700">=== </span><span style="color: #0000BB">$msg</span><span style="color: #007700">) {
    </span><span style="color: #FF8000">/* confirmar que la trama fue recibida */
    </span><span style="color: #0000BB">$stomp</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">ack</span><span style="color: #007700">(</span><span style="color: #0000BB">$frame</span><span style="color: #007700">);
}

</span><span style="color: #FF8000">/* eliminar la suscripción */
</span><span style="color: #0000BB">$stomp</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">unsubscribe</span><span style="color: #007700">(</span><span style="color: #0000BB">$queue</span><span style="color: #007700">);

</span><span style="color: #FF8000">/* cerrar la conexión */
</span><span style="color: #007700">unset(</span><span style="color: #0000BB">$stomp</span><span style="color: #007700">);

</span><span style="color: #0000BB">?&gt;</span></code></pre></div>
    </div>

  </div>
  <div class="example" id="example-2">
   <p><strong>Ejemplo #2 Estilo procedimental</strong></p>
   <div class="example-contents">
<div class="phpcode"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php

$queue  </span><span style="color: #007700">= </span><span style="color: #DD0000">'/queue/foo'</span><span style="color: #007700">;
</span><span style="color: #0000BB">$msg    </span><span style="color: #007700">= </span><span style="color: #DD0000">'bar'</span><span style="color: #007700">;

</span><span style="color: #FF8000">/* conexión */
</span><span style="color: #0000BB">$link </span><span style="color: #007700">= </span><span style="color: #0000BB">stomp_connect</span><span style="color: #007700">(</span><span style="color: #DD0000">'ssl://localhost:61612'</span><span style="color: #007700">);

</span><span style="color: #FF8000">/* comprobar la conexión */
</span><span style="color: #007700">if (!</span><span style="color: #0000BB">$link</span><span style="color: #007700">) {
    die(</span><span style="color: #DD0000">'Connection failed: ' </span><span style="color: #007700">. </span><span style="color: #0000BB">stomp_connect_error</span><span style="color: #007700">());
}

</span><span style="color: #FF8000">/* iniciar una transacción */
</span><span style="color: #0000BB">stomp_begin</span><span style="color: #007700">(</span><span style="color: #0000BB">$link</span><span style="color: #007700">, </span><span style="color: #DD0000">'t1'</span><span style="color: #007700">);

</span><span style="color: #FF8000">/* enviar un mensaje a la cola 'foo' */
</span><span style="color: #0000BB">stomp_send</span><span style="color: #007700">(</span><span style="color: #0000BB">$link</span><span style="color: #007700">, </span><span style="color: #0000BB">$queue</span><span style="color: #007700">, </span><span style="color: #0000BB">$msg</span><span style="color: #007700">, array(</span><span style="color: #DD0000">'transaction' </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'t1'</span><span style="color: #007700">));

</span><span style="color: #FF8000">/* validar una transacción */
</span><span style="color: #0000BB">stomp_commit</span><span style="color: #007700">(</span><span style="color: #0000BB">$link</span><span style="color: #007700">, </span><span style="color: #DD0000">'t1'</span><span style="color: #007700">);

</span><span style="color: #FF8000">/* suscribirse a mensajes de la cola 'foo' */
</span><span style="color: #0000BB">stomp_subscribe</span><span style="color: #007700">(</span><span style="color: #0000BB">$link</span><span style="color: #007700">, </span><span style="color: #0000BB">$queue</span><span style="color: #007700">);

</span><span style="color: #FF8000">/* leer una trama */
</span><span style="color: #0000BB">$frame </span><span style="color: #007700">= </span><span style="color: #0000BB">stomp_read_frame</span><span style="color: #007700">(</span><span style="color: #0000BB">$link</span><span style="color: #007700">);

if (</span><span style="color: #0000BB">$frame</span><span style="color: #007700">[</span><span style="color: #DD0000">'body'</span><span style="color: #007700">] === </span><span style="color: #0000BB">$msg</span><span style="color: #007700">) {
    </span><span style="color: #FF8000">/* confirmar que la trama fue recibida */
    </span><span style="color: #0000BB">stomp_ack</span><span style="color: #007700">(</span><span style="color: #0000BB">$link</span><span style="color: #007700">, </span><span style="color: #0000BB">$frame</span><span style="color: #007700">[</span><span style="color: #DD0000">'headers'</span><span style="color: #007700">][</span><span style="color: #DD0000">'message-id'</span><span style="color: #007700">]);
}

</span><span style="color: #FF8000">/* eliminar la suscripción */
</span><span style="color: #0000BB">stomp_unsubscribe</span><span style="color: #007700">(</span><span style="color: #0000BB">$link</span><span style="color: #007700">, </span><span style="color: #0000BB">$queue</span><span style="color: #007700">);

</span><span style="color: #FF8000">/* cerrar la conexión */
</span><span style="color: #0000BB">stomp_close</span><span style="color: #007700">(</span><span style="color: #0000BB">$link</span><span style="color: #007700">);

</span><span style="color: #0000BB">?&gt;</span></code></pre></div>
    </div>

  </div>
 </div>


 <div class="refsect1 notes" id="refsect1-stomp.ack-notes">
  <h3 class="title">Notas</h3>
  <blockquote class="note"><p><strong class="note">Nota</strong>: <span class="simpara">Un encabezado de transacción puede ser especificado, indicando que la confirmación de los mensajes debe ser parte de la transacción.</span></p></blockquote>
  <div class="tip"><strong class="tip">Sugerencia</strong><p class="simpara">Stomp es, por naturaleza, asíncrono. Una comunicación síncrona puede ser implementada añadiendo un encabezado receipt. Esto hará que los métodos no devuelvan nada hasta que el mensaje de confirmación no haya sido recibido o hasta que el tiempo de espera no sea alcanzado.</p></div>
 </div>


</div><?php manual_footer($setup); ?>