(0) exportieren Drucken
Alle erweitern

Verwenden von Service Bus aus PHP mit AMQP 1.0

Letzte Aktualisierung: Januar 2014

Proton-PHP ist eine PHP-Sprachbindung an Proton-C. Dies bedeutet, dass Proton-PHP als ein Wrapper um ein in C implementiertes Modul implementiert ist.

Sie können Proton-C und die zugehörigen Bindungen (einschließlich PHP) hier herunterladen. Der Download liegt in Quellcodeform vor. Befolgen Sie zum Erstellen des Codebuilds die Anweisungen, die im heruntergeladenen Paket enthalten sind.

ImportantWichtig
Zum Zeitpunkt der Erstellung dieses Dokuments ist SSL-Unterstützung in Proton-C nur für Linux-Betriebssysteme verfügbar. Da Microsoft Azure Service Bus die Verwendung von SSL erfordert, kann Proton-C (und die Sprachbindungen) zurzeit nur für den Zugriff auf Microsoft Azure Service Bus aus Linux verwendet werden. Es wird zurzeit daran gearbeitet, Proton-C mit SSL unter Windows zu aktivieren. Überprüfen Sie daher regelmäßig, ob Updates verfügbar sind.

Der folgende Code zeigt, wie Nachrichten von einer Servicebus-Messagingentität gesendet und empfangen werden.

Der folgende Code zeigt, wie eine Nachricht an eine Servicebus-Messagingentität gesendet wird.

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

Der folgende Code zeigt, wie eine Nachricht von einer Servicebus-Messagingentität empfangen wird.

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

Proton-PHP-Nachrichten unterstützen Anwendungseigenschaften mit den folgenden Typen: integer, double, Boolean, string und object. Der folgende PHP-Code zeigt, wie eine Eigenschaft für eine Nachricht mithilfe dieser Eigenschaftentypen festgelegt wird.

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

In der Servicebus .NET-API werden Nachrichtenanwendungseigenschaften in der Auflistung Properties von BrokeredMessage gespeichert. Der folgende Code zeigt, wie die Anwendungseigenschaften einer Nachricht gelesen werden, die von einem PHP-Client empfangen wurde.

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

Die folgende Tabelle ordnet die PHP-Eigenschaftentypen den .NET-Eigenschaftentypen zu.

 

PHP-Eigenschaftentyp .NET-Eigenschaftentyp

integer

int

double

double

boolean

bool

string

string

object

Object

Der Typ BrokeredMessage unterstützt Anwendungseigenschaften mit den folgenden Typen: byte, sbyte, char, short, ushort, int, uint, long, ulong, float, double, decimal, bool, Guid, string, Uri, DateTime, DateTimeOffset und TimeSpan. Der folgende .NET-Code zeigt, wie Eigenschaften für ein BrokeredMessage-Objekt mithilfe dieser Eigenschaftentypen festgelegt werden.

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

Der folgende PHP-Code zeigt, wie die Anwendungseigenschaften einer Nachricht gelesen werden, die von einem Servicebus .NET-Client empfangen wurde.

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

Die folgende Tabelle ordnet die .NET-Eigenschaftentypen den PHP-Eigenschaftentypen zu.

 

.NET Eigenschaftentyp PHP Eigenschaftentyp Hinweise

byte

integer

sbyte

integer

char

Char

Proton-PHP-Klasse

short

integer

ushort

integer

int

integer

uint

Integer

long

integer

ulong

integer

float

double

double

double

decimal

string

Decimal wird zurzeit mit Proton nicht unterstützt.

bool

boolean

Guid

UUID

Proton-PHP-Klasse

string

string

DateTime

integer

DateTimeOffset

DescribedType

DateTimeOffset.UtcTicks dem AMQP-Typ zugeordnet:

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

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

</type>

TimeSpan

DescribedType

Timespan.Ticks dem AMQP-Typ zugeordnet:

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

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

</type>

Uri

DescribedType

Uri.AbsoluteUri dem AMQP-Typ zugeordnet:

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

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

</type>

Die folgenden Tabellen zeigen die Zuordnung zwischen den Proton-PHP-Standardnachrichteneigenschaften und den BrokeredMessage-Standardnachrichteneigenschaften.

 

Proton-PHP Service Bus .NET Hinweise

Durable

Nicht verfügbar

Service Bus unterstützt nur Nachrichten vom Typ durable.

Priority

Nicht verfügbar

Service Bus unterstützt nur Priorität für einzelne Nachrichten.

Ttl

Message.TimeToLive

Konvertierung, der TTL-Wert von Proton-PHP wird in Millisekunden definiert.

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

Nicht verfügbar

expiry_time

Message.ExpiresAtUTC

creation_time

Nicht verfügbar

group_id

Message.SessionId

group_sequence

reply_to_group_id

Message.ReplyToSessionId

Format

Nicht verfügbar

 

Service Bus .NET Proton-PHP Hinweise

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

Konvertierung, der TTL-Wert von Proton-PHP wird in Millisekunden definiert.

To

Message->address

Microsoft führt eine Onlineumfrage durch, um Ihre Meinung zur MSDN-Website zu erfahren. Wenn Sie sich zur Teilnahme entscheiden, wird Ihnen die Onlineumfrage angezeigt, sobald Sie die MSDN-Website verlassen.

Möchten Sie an der Umfrage teilnehmen?
Anzeigen:
© 2014 Microsoft