mariopenterman / phpenqueue-azure-service-bus
Azure 服务总线传输
v1.1.5
2020-03-30 12:37 UTC
Requires
- php: ^7.1.3
- enqueue/enqueue: ^0.9.0@dev
- mariopenterman/windowsazure: ^0.5
- queue-interop/queue-interop: ^0.7|^0.8
Requires (Dev)
- enqueue/null: 0.9.x-dev
- enqueue/test: 0.9.x-dev
- phpunit/phpunit: ^7.5
- queue-interop/queue-spec: 0.6.x-dev
README
Azure 服务总线传输是一个使用与 Queue Interop 兼容的 Azure 服务总线作为消息代理的消息解决方案传输。
该传输使用 Azure 服务总线 作为消息代理。它在那里创建一个集合(一个队列或主题)。它是一个先入先出(FIFO)系统。
安装
- 使用 composer
$ composer require assoconnect/phpenqueue-azure-service-bus
创建上下文
<?php use WindowsAzure\Common\ServicesBuilder; // connects to azure $connectionString = "Endpoint=[yourEndpoint];SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=[Primary Key]"; $serviceBusRestProxy = ServicesBuilder::getInstance()->createServiceBusService($connectionString); $context = $factory->createContext();
向主题发送消息
<?php /** @var \Enqueue\AzureStorage\AzureStorageContext $context */ $fooTopic = $context->createTopic('aTopic'); $message = $context->createMessage('Hello world!'); $context->createProducer()->send($fooTopic, $message);
向队列发送消息
<?php /** @var \Enqueue\AzureStorage\AzureStorageContext $context */ $fooQueue = $context->createQueue('aQueue'); $message = $context->createMessage('Hello world!'); $context->createProducer()->send($fooQueue, $message);
发送过期消息
<?php /** @var \Enqueue\AzureStorage\AzureStorageContext $context */ /** @var \Enqueue\AzureStorage\AzureStorageDestination $fooQueue */ $message = $context->createMessage('Hello world!'); $context->createProducer() ->setTimeToLive(60000) // 60 sec ->send($fooQueue, $message) ;
消费消息
<?php /** @var \Enqueue\AzureStorage\AzureStorageContext $context */ $fooQueue = $context->createQueue('aQueue'); $consumer = $context->createConsumer($fooQueue); $message = $consumer->receiveNoWait(); // process a message $consumer->acknowledge($message); //$consumer->reject($message);
删除队列(清除消息)
<?php /** @var \Enqueue\AzureStorage\AzureStorageContext $context */ $fooQueue = $context->createQueue('aQueue'); $context->deleteQueue($fooQueue);
删除主题(清除消息)
<?php /** @var \Enqueue\AzureStorage\AzureStorageContext $context */ $fooTopic = $context->createTopic('aTopic'); $context->deleteTopic($fooTopic);