<?php include 'bootstrap.php'; $messaging = new SoftLayer\Messaging(); $messaging->authenticate(QUEUE_ACCOUNT, QUEUE_USERNAME, QUEUE_API_KEY); // Much like creating a queue, all I need to provide for a topic is a name. $topic = $messaging->topic('myFirstTopic')->create(); // To actually do something, topics need subscribers. I can add either // HTTP and/or queue subscriptions. // A queue must exist before creating a subscription which targets it. $queue1 = $messaging->queue('myTargetQueue1')->create(); $queue2 = $messaging->queue('myTargetQueue2')->create(); // First I'll create an endpoint targeting each queue. $queueEndpoint1 = SoftLayer\Messaging\Endpoint::endpointByType('queue'); $queueEndpoint1->setQueueName($queue1->getName()); $queueEndpoint2 = SoftLayer\Messaging\Endpoint::endpointByType('queue'); $queueEndpoint2->setQueueName($queue2->getName()); // Then I add them to the topic as individual subscriptions. $topic->subscription()->setEndpointType('queue')->setEndpoint($queueEndpoint1)->create(); $topic->subscription()->setEndpointType('queue')->setEndpoint($queueEndpoint2)->create(); // Now the topic should tell me I have 2 subscribers, each targeting a // different queue. $subscriptions = $topic->subscriptions(); foreach ($subscriptions as $s) { echo $s->getId() . ' : ' . $s->getEndpointType() . ' : ' . $s->getEndpoint()->getQueueName() . PHP_EOL; } // Finally, I can push a message to the topic. That message will subsequently // end up in both target queues. $topic->message('Example Message 1')->create(); // The message needs a moment to be dispatched and visible. sleep(10);