Exporter (0) Imprimer
Développer tout

Utilisation du Service Bus à partir de PHP avec AMQP 1.0

Mis à jour: janvier 2014

Proton-PHP est une liaison de langage PHP à Proton-C. En d’autres termes, Proton-PHP est implémenté sous la forme d’un wrapper autour d’un moteur implémenté dans C.

Vous pouvez télécharger Proton-C et les liaisons associées (notamment PHP) à partir d’ici. Le téléchargement prend la forme d’un code source. Pour créer le code, suivez les instructions incluses dans le package téléchargé.

ImportantImportant
Au moment où nous écrivons ces lignes, la prise en charge SSL dans Proton-C est uniquement disponible pour les systèmes d'exploitation Linux. Comme Microsoft Azure Service Bus nécessite l’utilisation de SSL, Proton-C (et les liaisons de langage) ne peut être utilisé que pour accéder à Microsoft Azure Service Bus à partir de Linux pour le moment. Des efforts sont en cours pour rendre compatible Proton-C avec SSL sur Windows, alors vérifiez souvent la présence de nouvelles mises à jour.

Le code suivant montre comment échanger des messages à partir d’une entité de messagerie Service Bus.

Le code suivant montre comment envoyer un message à une entité de messagerie Service Bus.

$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();

Le code suivant montre comment recevoir un message à partir d’une entité de messagerie Service Bus.

$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();

Les messages Proton-PHP prennent en charge les propriétés d’application des types suivants : integer, double, Boolean, string et object. Le code PHP suivant montre comment définir les propriétés sur un message en utilisant chacun de ces types de propriétés.

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

Dans l’API .NET de Service Bus, les propriétés d’application de message sont transférées dans la collection Properties de BrokeredMessage. Le code suivant montre comment lire les propriétés d’application d’un message reçu d’un client 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();
}

Le tableau suivant mappe les types de propriétés PHP aux types de propriétés .NET.

 

Type de propriété PHP Type de propriété .NET

integer

int

double

double

boolean

bool

string

string

object

Objet

Le type BrokeredMessage prend en charge les propriétés d’application des types suivants : byte, sbyte, char, short, ushort, int, uint, long, ulong, float, double, decimal, bool, Guid, string, Uri, DateTime, DateTimeOffset et TimeSpan. Le code .NET suivant montre comment définir les propriétés sur un objet BrokeredMessage en utilisant chacun de ces types de propriétés.

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);

Le code PHP suivant montre comment lire les propriétés d’application d’un message reçu d’un client .NET Service Bus.

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

Le tableau suivant mappe les types de propriétés .NET aux types de propriétés PHP.

 

.NET Type de propriété PHP Type de propriété Remarques

byte

integer

sbyte

integer

char

Char

Classe Proton-PHP

short

integer

ushort

integer

int

integer

uint

Integer

long

integer

ulong

integer

float

double

double

double

decimal

string

Le type decimal n’est pas pris en charge avec Proton pour le moment.

bool

boolean

Guid

UUID

Classe Proton-PHP

string

string

DateTime

integer

DateTimeOffset

DescribedType

DateTimeOffset.UtcTicks mappé au type AMQP :

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

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

</type>

TimeSpan

DescribedType

Timespan.Ticks mappé au type AMQP :

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

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

</type>

Uri

DescribedType

Uri.AbsoluteUri mappé au type AMQP :

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

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

</type>

Les tableaux suivants montrent le mappage entre les propriétés de message standard de Proton-PHP et les propriétés de message standard de BrokeredMessage.

 

Proton-PHP .NET Service Bus Remarques

Durable

Non applicable

Le Service Bus ne prend en charge que les messages durables.

Priority

Non applicable

Le Service Bus ne prend en charge qu’une seule priorité de message.

Ttl

Message.TimeToLive

Conversion. La durée de vie de Proton-PHP est définie en millisecondes.

first_acquirer

delivery_count

Id

Message.Id

user_id

Adresse

Message.To

Subject

Message.Label

reply_to

Message.ReplyTo

correlation_id

Message.CorrelationId

content_type

Message.ContentType

content_encoding

Non applicable

expiry_time

Message.ExpiresAtUTC

creation_time

Non applicable

group_id

Message.SessionId

group_sequence

reply_to_group_id

Message.ReplyToSessionId

Format

Non applicable

 

.NET Service Bus Proton-PHP Remarques

ContentType

Message->content_type

CorrelationId

Message->correlation_id

EnqueuedTimeUtc

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

Label

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

Conversion. La durée de vie de Proton-PHP est définie en millisecondes.

To

Message->address

Microsoft réalise une enquête en ligne pour recueillir votre opinion sur le site Web de MSDN. Si vous choisissez d’y participer, cette enquête en ligne vous sera présentée lorsque vous quitterez le site Web de MSDN.

Si vous souhaitez y participer,
Afficher:
© 2014 Microsoft