mirror of
https://github.com/php/doc-es.git
synced 2026-03-26 00:12:06 +01:00
git-svn-id: https://svn.php.net/repository/phpdoc/es/trunk@337250 c90b9560-bf6c-de11-be94-00142212c4b1
360 lines
11 KiB
XML
360 lines
11 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- $Revision$ -->
|
|
<!-- EN-Revision: a56106f69198dfe88c6084593c78a71c26b24353 Maintainer: regiemix Status: ready -->
|
|
<!-- Reviewed: no -->
|
|
|
|
<chapter xml:id="sam.examples" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
&reftitle.examples;
|
|
<section xml:id="sam.connections">
|
|
<title>Conexiones</title>
|
|
<para>
|
|
Para realizar las funciones de mensajería y encolado de los mensajes,
|
|
se debe establecer una conexión con un servidor de mensajería creando un objeto SAMConnection
|
|
y llamando a su método "connect" , con un conjunto de propiedades
|
|
de conexión, para conectar el script PHP script al servidor de mensajería. Durante
|
|
el tiempo que el objeto SAMConnection no sea destruído, la conexión
|
|
estará activa y disponible para ser utilizada. Todos los objetos SAMConnection
|
|
serán destruídos cuando el script PHP finalice.
|
|
</para>
|
|
<para>
|
|
Se utilizarán el conjunto de propiedades por defecto en la conexión a un servidor
|
|
de mensajería, pero el script PHP debe especificar como mínimo el protocolo que será
|
|
utilizado.
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>Creación de una conexión y conexión a un servidor de mensajería remoto WebSphere MQSeries</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
$conn = new SAMConnection();
|
|
$conn->connect(SAM_WMQ, array(SAM_HOST => 'myhost.mycompany.com',
|
|
SAM_PORT => 1506,
|
|
SAM_BROKER => 'mybroker'));
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>Creación de una conexión y conexión a un servidor remoto WebSphere Application Server</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
$conn = new SAMConnection();
|
|
$conn->connect(SAM_WPM, array(SAM_ENDPOINTS => 'localhost:7278:BootstrapBasicMessaging',
|
|
SAM_BUS => 'Bus1',
|
|
SAM_TARGETCHAIN => 'InboundBasicMessaging'));
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>Creación de una conexión y conexión a un servidor MQTT</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
$conn = new SAMConnection();
|
|
$conn->connect(SAM_MQTT, array(SAM_HOST => 'myhost.mycompany.com',
|
|
SAM_PORT => 1883));
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
</section> <!-- xml:id=sam.connections -->
|
|
|
|
<section xml:id="sam.messages">
|
|
<title>Mensajes</title>
|
|
<para>
|
|
Los mensajes enviados y recibidos de las colas, se representan por el objeto
|
|
SAMMessage. El objeto SAMMessage encapsula el cuerpo del
|
|
mensaje (si existe alguno) y las propiedades de cabecera asociadas al
|
|
mensaje. Un objeto SAMMessage es proporcionado como un parámetro a una operación de mensajería o
|
|
devuelto como un resultado.
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>Creación de un mensaje con un cuerpo de texto simple</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
$msg = new SAMMessage('Este es un mensaje de texto simple');
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
Los mensajes deben tener las propiedades de cabecera asociadas, lo que permitirá tener
|
|
control sobre el transporte del mensaje o información futura sobre la
|
|
aplicación receptora. Por defecto las propiedades del mensaje se distribuirán al
|
|
sistema de mensajería como strings y en ese caso pueden ser
|
|
definidas con la siguiente sintaxis sencilla:
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>Definición de una propiedad de formateado de texto utilizando la sintaxis por defecto</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
$msg->header->myPropertyName = 'textData';
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
Si se desea pasar la información de tipo, se puede utilizar
|
|
una sintaxis alternativa, donde el valor y la declaración de tipo son pasados en un array
|
|
asociativo:
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>Establecer una propiedad empleando una declaración de tipo</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
$msg->header->myPropertyName = array(3.14159, SAM_FLOAT);
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
Las propiedades también pueden extraerse de la cabecera del mensaje.
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>Recuperación de una propiedad desde la cabecera del mensaje</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
$myProperty = $msg->header->myPropertyName;
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
</section> <!-- xml:id=sam.messages -->
|
|
|
|
<section xml:id="sam.operations">
|
|
<title>Operaciones de mensajería</title>
|
|
<para>
|
|
Todas las operaciones de mensajería se realizan a través de llamadas a métodos sobre el
|
|
objeto de conexión.
|
|
Para añadir un mensaje a una cola se utiliza en método "send" , para obtener un
|
|
mensaje de una cola se utiliza el método "receive". Otros métodos
|
|
proporcionan otras funcionalidades como la publicación, suscripción o el control
|
|
sobre las transacciones.
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>Añadir un mensaje a una cola y recibir una respuesta</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
$msg = new SAMMessage('Este es un mensaje simple de texto');
|
|
$msg->header->SAM_REPLY_TO = 'queue://receive/test';
|
|
$correlid = $conn->send('queue://send/test', $msg);
|
|
|
|
if (!$correlid) {
|
|
// El Send falló!
|
|
echo "Send fallido ($conn->errno) $conn->error";
|
|
} else {
|
|
$resp = $conn->receive('queue://receive/test', array(SAM_CORRELID => $correlid));
|
|
}
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
</section> <!-- xml:id=sam.operations -->
|
|
|
|
<section xml:id="sam.pubsub">
|
|
<title>Publicar/Suscribir y suscripción a temas (topics)</title>
|
|
<para>
|
|
SAM permite enviar mensajes a colas, o para WebSphere MQ
|
|
y WPM, publicar/suscribir temas.
|
|
El envío a un tema es especificado por SAM de la manera habitual, p.e. de la
|
|
forma 'topic://fred', mejor que de la forma 'queue://AQUEUE' utilizada para
|
|
operaciones punto a punto. Para publicar/suscribir únicamente es
|
|
necesario especificar el nombre del broker correcto en la llamada al método "connect"
|
|
del objeto SAMConnect y el tema deseado en el argumento de destino de las llamadas
|
|
a los métodos "send" y "receive" del objeto SAMConnect. La interface PHP es
|
|
sin embargo idéntica al modelo punto a punto.
|
|
</para>
|
|
<para>
|
|
Por defecto, SAM crea suscripciones no duraderas cuando se utiliza
|
|
publicar/suscribir. Esto significa que si una aplicación cliente está
|
|
inactiva cuando los mensajes se publiquen en un tema, entonces esta aplicación no
|
|
los recibirá cuando sea reactivada. SAM también permite realizar
|
|
suscripciones duraderas a temas cuando se usa el publicar/suscribir de WPM o WebSphere
|
|
MQ. El objetivo de estas suscripciones es permitir
|
|
que los datos sean recibidos por una aplicación cliente incluso si este cliente no estaba
|
|
activo en el momento de publicación de los datos.
|
|
</para>
|
|
<para>
|
|
Las suscripciones duraderas se especifican utilizando el método "subscribe"
|
|
del objeto SAMConnect. Este método toma el tema de destino como un parámetro de entrada y
|
|
devuelve un identificador de suscripción que puede ser utilizado en siguientes
|
|
llamadas "receive". Cuando la suscripción ya no se necesita, debe utilizarse el
|
|
método "unsubscribe" del objeto SAMConnection para eliminar la
|
|
suscripción.
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>Creación de una suscripción duradera a un tema</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
|
|
$subName = $conn->subscribe('topic://A');
|
|
|
|
if (!$subName) {
|
|
echo "Subscribe fallido";
|
|
} else {
|
|
# Subscribe OK
|
|
// ...
|
|
}
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>Suscripción a un tema utilizando un servidor WebSphere Platform Messaging (WPM)</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
$conn = new SAMConnection();
|
|
// Nota: Para pub/sub en WPM, al conectar al nombre de un motor de mensajería,
|
|
// para mantener la suscrición duradera debe especificarse(SAM_WPM_DUR_SUB_HOME).
|
|
$conn->connect(SAM_WMQ, array(SAM_ENDPOINTS => 'localhost:7278:BootstrapBasicMessaging',
|
|
SAM_BUS => 'Bus1',
|
|
SAM_TARGETCHAIN => 'InboundBasicMessaging',
|
|
SAM_WPM_DUR_SUB_HOME => 'MyMachineNode01.server1-Bus1'));
|
|
|
|
$subName = $conn->subscribe('topic://A');
|
|
|
|
if (!$subName) {
|
|
echo "Subscribe fallido";
|
|
} else {
|
|
# Subscribe OK
|
|
// ...
|
|
}
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>Recepción de datos publicados utilizando una suscripción duradera</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
|
|
$msg = $conn->receive($subName);
|
|
if ($msg) {
|
|
echo "Mensaje recibido OK";
|
|
} else {
|
|
echo "El receive falló";
|
|
}
|
|
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>Eliminación de una suscripción duradera a un tema</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
|
|
if (!$conn->unsubscribe($subName)) {
|
|
echo "Unsubscribe fallido";
|
|
}
|
|
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
</section> <!-- xml:id=sam.pubsub -->
|
|
|
|
<section xml:id="sam.errors">
|
|
<title>Control de errores</title>
|
|
<para>
|
|
Todos los métodos SAMConnection que proporcionan acceso a operaciones de mensajería
|
|
devuelven &false; en caso de error en el procesado de la petición.
|
|
Adicionalmente, el objeto SAMConnection tiene dos propiedades: "errno"
|
|
y "error", que proporcionan respectivamente el código y literal del
|
|
último error ocurrido en la conexión.
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>Control de errores de un método que no devuelve resultado</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
if (!$conn->commit()) {
|
|
// El commit falló!
|
|
echo "Commit fallido ($conn->errno) $conn->error";
|
|
}
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>Control de errores de un método que devuelve resultado</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
$correlid = $conn->send('queue://send/test', $msg);
|
|
|
|
if (!$correlid) {
|
|
// El Send falló!
|
|
echo "Send fallido ($conn->errno) $conn->error";
|
|
} else {
|
|
/* ... */
|
|
}
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
</section> <!-- xml:id=sam.errors -->
|
|
|
|
</chapter>
|
|
|
|
<!-- Keep this comment at the end of the file
|
|
Local variables:
|
|
mode: sgml
|
|
sgml-omittag:t
|
|
sgml-shorttag:t
|
|
sgml-minimize-attributes:nil
|
|
sgml-always-quote-attributes:t
|
|
sgml-indent-step:1
|
|
sgml-indent-data:t
|
|
indent-tabs-mode:nil
|
|
sgml-parent-document:nil
|
|
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
|
|
sgml-exposed-tags:nil
|
|
sgml-local-catalogs:nil
|
|
sgml-local-ecat-files:nil
|
|
End:
|
|
vim600: syn=xml fen fdm=syntax fdl=2 si
|
|
vim: et tw=78 syn=sgml
|
|
vi: ts=1 sw=1
|
|
-->
|
|
|