VENTAS: 1-800-867-1389

Uso del Service Bus desde PHP con AMQP 1.0

Actualizado: marzo de 2015

Proton-PHP es un lenguaje PHP con enlace a Proton-C; es decir, Proton-PHP se implementa como un contenedor alrededor de un motor implementado en C.

Proton-C y los enlaces asociados (incluido PHP) se pueden descargar desde aquí. La descarga se realiza en forma de código fuente. Para generar el código, siga las instrucciones que se incluyen en el paquete descargado.

ImportantImportante
En el momento de redacción de este documento, la compatibilidad de SSL en Proton-C solo está disponible para sistemas operativos Linux. Dado que Microsoft Azure Service Bus requiere el uso de SSL, Proton-C (y otros enlaces de lenguaje) solo se puede usar para acceder a Microsoft Azure Service Bus desde Linux en este momento. Se está trabajando para admitir Proton-C con SSL en Windows. Compruebe periódicamente si existen actualizaciones.

El código siguiente muestra cómo se envían y reciben mensajes desde una entidad de mensajería del CmdLets.

El código siguiente muestra cómo se envía un mensaje a una entidad de mensajería del CmdLets.

$messenger = new Messenger();
$message = new Message();
$message->address = "amqps://[username]:[password]@[namespace].servicebus.windows.net/[entity]";

$message->body = "This is a text string";
$messenger->put($message);
$messenger->send();

El código siguiente muestra cómo se recibe un mensaje de una entidad de mensajería del CmdLets.

$messenger = new Messenger();
$address = "amqps://[username]:[password]@[namespace].servicebus.windows.net/[entity]";
$messenger->subscribe($address);

$messenger->start();
$messenger->recv(1);

if($messenger->incoming())
{
   $message = new Message();
   $messenger->get($message);      
}

$messenger->stop();

Los mensajes de Proton-PHP admiten los siguientes tipos de propiedades de la aplicación: integer, double, Boolean, string y object. El siguiente código PHP muestra cómo se definen las propiedades en un mensaje con cada uno de estos tipos de propiedades.

$message->properties["TestInt"] = 1;    
$message->properties["TestDouble"] = 1.5;      
$message->properties["TestBoolean"] = False;
$message->properties["TestString"] = "Service Bus";    
$message->properties["TestObject"] = new UUID("1234123412341234");   

En la API de .NET del CmdLets, las propiedades de la aplicación del mensaje se incluyen en la colección de Properties de BrokeredMessage. El código siguiente muestra cómo se leen las propiedades de la aplicación de un mensaje que se ha recibido de un cliente de PHP.

if (message.Properties.Keys.Count > 0)
{
  foreach (string name in message.Properties.Keys)
  {
    Object value = message.Properties[name];
    Console.WriteLine(name + ": " + value + " (" + value.GetType() + ")" );
  }
  Console.WriteLine();
}if (message.Properties.Keys.Count > 0)
{
foreach (string name in message.Properties.Keys)
{
  Object value = message.Properties[name];
  Console.WriteLine(name + ": " + value + " (" + value.GetType() + ")" );
}
Console.WriteLine();
}

En la tabla siguiente, se asignan los tipos de propiedades de PHP a los tipos de propiedades de .NET.

 

Tipo de propiedad de PHP Tipo de propiedad de .NET

integer

int

double

double

boolean

bool

string

string

objeto

Objeto

El tipo BrokeredMessage admite los siguientes tipos de propiedades de la aplicación: byte, sbyte, char, short, ushort, int, uint, long, ulong, float, double, decimal, bool, Guid, string, Uri, DateTime, DateTimeOffset y TimeSpan. El siguiente código de .NET muestra cómo se definen las propiedades en un objeto BrokeredMessage mediante cada uno de estos tipos de propiedades.

message.Properties["TestByte"] = (byte)128;
message.Properties["TestSbyte"] = (sbyte)-22;
message.Properties["TestChar"] = (char) 'X';
message.Properties["TestShort"] = (short)-12345;
message.Properties["TestUshort"] = (ushort)12345;
message.Properties["TestInt"] = (int)-100;
message.Properties["TestUint"] = (uint)100;
message.Properties["TestLong"] = (long)-12345;
message.Properties["TestUlong"] = (ulong)12345;
message.Properties["TestFloat"] = (float)3.14159;
message.Properties["TestDouble"] = (double)3.14159;
message.Properties["TestDecimal"] = (decimal)3.14159;
message.Properties["TestBoolean"] = true;
message.Properties["TestGuid"] = Guid.NewGuid();
message.Properties["TestString"] = "Service Bus";
message.Properties["TestUri"] = new Uri("http://www.bing.com");
message.Properties["TestDateTime"] = DateTime.Now;
message.Properties["TestDateTimeOffSet"] = DateTimeOffset.Now;
message.Properties["TestTimeSpan"] = TimeSpan.FromMinutes(60);

El siguiente código PHP muestra cómo se leen las propiedades de la aplicación de un mensaje que se ha recibido de un cliente de .NET del CmdLets.

if ($message->properties != null)
{
  foreach($message->properties as $key => $value)
  {
    printf("-- %s : %s (%s) \n", $key, $value, gettype($value));                       
  }         
}

En la tabla siguiente, se asignan los tipos de propiedades de .NET a los tipos de propiedades de PHP.

 

.NET Tipo de propiedad PHP Tipo de propiedad Notas

byte

integer

sbyte

integer

char

Char

Clase Proton-PHP

short

integer

ushort

integer

int

integer

uint

Entero

largo

integer

ulong

integer

float

double

double

double

decimal

string

Decimal no es compatible actualmente con Proton.

bool

boolean

GUID

UUID

Clase Proton-PHP

string

string

DateTime

integer

DateTimeOffset

DescribedType

DateTimeOffset.UtcTicks asignado al tipo AMQP:

<type name=”datetime-offset” class=restricted source=”long”>

<descriptor name=”com.microsoft:datetime-offset” />

</type>

TimeSpan

DescribedType

Timespan.Ticks asignado al tipo AMQP:

<type name=”timespan” class=restricted source=”long”>

<descriptor name=”com.microsoft:timespan” />

</type>

Uri

DescribedType

Uri.AbsoluteUri asignado al tipo AMQP:

<type name=”uri” class=restricted source=”string”>

<descriptor name=”com.microsoft:uri” />

</type>

En las tablas siguientes, se muestra la asignación entre las propiedades de mensajes estándar de Proton-PHP y las propiedades de mensajes estándar de BrokeredMessage.

 

Proton-PHP .NET del Service Bus Notas

Durable

n/d

El Service Bus solo admite mensajes durables.

Priority

n/d

El Service Bus solo admite una prioridad del mensaje.

TTL

Message.TimeToLive

El TTL de conversión de Proton-PHP se define en milisegundos.

first_acquirer

delivery_count

Id

Message.Id

user_id

Address

Message.To

Subject

Message.Label

reply_to

Message.ReplyTo

correlation_id

Message.CorrelationId

content_type

Message.ContentType

content_encoding

n/d

expiry_time

Message.ExpiresAtUTC

creation_time

n/d

group_id

Message.SessionId

group_sequence

reply_to_group_id

Message.ReplyToSessionId

Format

n/d

 

.NET del Service Bus Proton-PHP Notas

ContentType

Message->content_type

CorrelationId

Message->correlation_id

EnqueuedTimeUtc

Message->annotations[x-opt-enqueued-time]

Etiqueta

Message->subject

MessageId

Message->id

ReplyTo

Message->reply_to

ReplyToSessionId

Message->reply_to_group_id

ScheduledEnqueueTimeUtc

Message->annotations [“x-opt-scheduled-enqueue-time”]

SessionId

Message->group_id

TimeToLive

Message->ttl

El TTL de conversión de Proton-PHP se define en milisegundos.

Para 

Message->address

¿Te ha resultado útil?
(Caracteres restantes: 1500)
Gracias por sus comentarios
Mostrar:
© 2015 Microsoft