发布与订阅

使用 Dapr,您可以发布任何内容,包括 cloud events。 SDK 包含一个简单的 cloud event 实现,但您也可以只传递符合 cloud event 规范的数组或使用其他库。

  1. <?php
  2. $app->post('/publish', function(\Dapr\Client\DaprClient $daprClient) {
  3. $daprClient->publishEvent(pubsubName: 'pubsub', topicName: 'my-topic', data: ['something' => 'happened']);
  4. });

有关发布/订阅的更多信息,请查看 操作方法

数据内容类型

PHP SDK 允许在构建自定义 cloud event 或发布原始数据时设置数据内容类型。

  1. <?php
  2. $event = new \Dapr\PubSub\CloudEvent();
  3. $event->data = $xml;
  4. $event->data_content_type = 'application/xml';
  1. <?php
  2. /**
  3. * @var \Dapr\Client\DaprClient $daprClient
  4. */
  5. $daprClient->publishEvent(pubsubName: 'pubsub', topicName: 'my-topic', data: $raw_data, contentType: 'application/octet-stream');

Binary data

  1. 只有 <code>application/octet-steam</code> 支持二进制数据。

接收 Cloud Event

在您的订阅处理器中,您可以让 DI 容器将 Dapr\PubSub\CloudEventarray 注入到您的控制器中。 前者会进行一些验证,以确保事件是正确的。 如果你需要直接访问数据,或者事件不符合规范,请使用array