返回介绍

1.3.3 代码示例

发布于 2020-10-01 15:14:13 字数 3640 浏览 1002 评论 0 收藏 0

代码示例 (Java)

初始化:

String endpoint = "http://staging.emq.api.xiaomi.com";
// 设置ak sk
Credential credential = new Credential().setSecretKeyId(secretKeyId).
    setSecretKey(secretKey).setType(UserType.APP_SECRET);
EMQClientFactory clientFactory = new EMQClientFactory(credential,
    generateHttpClient(10, 10));

// properties配置
Properties properties = new Properties();
properties.setProperty("galaxy.emq.service.endpoint", endpoint); // endpoint
properties.setProperty("galaxy.emq.client.timeout", String.valueOf(30000)); // 可选 socket 超时时间
properties.setProperty("galaxy.emq.client.conn.timeout", String.valueOf(60000)); // 可选 客户端超时时间
properties.setProperty("galaxy.emq.client.auto.retry", String.valueOf(true));  // 可选 是否重试
properties.setProperty("galaxy.emq.client.retry.number", String.valueOf(3));  // 可选 重试次数
EMQClientConfig config = new EMQClientConfig(properties);

QueueService.Iface queueClient = clientFactory.newQueueClient(config);
MessageService.Iface messageClient = clientFactory.newMessageClient(config);

创建队列:

  CreateQueueRequest createQueueRequest = new CreateQueueRequest(name);
  CreateQueueResponse createQueueResponse = queueClient.createQueue(
      createQueueRequest);
  // 之后的操作都需要使用这里的queueName,而不是第一行中的name
  String queueName = createQueueResponse.getQueueName();

发送者:

  while(true) {
    SendMessageRequest sendMessageRequest =
        new SendMessageRequest(queueName, messageBody);
    SendMessageResponse sendMessageResponse =
        messageClient.sendMessage(sendMessageRequest);
  }

接收者:

  while(true) {
    ReceiveMessageRequest receiveMessageRequest =
        new ReceiveMessageRequest(queueName);
    List<ReceiveMessageResponse> receiveMessageResponse =
        messageClient.receiveMessage(receiveMessageRequest);

    if (!receiveMessageResponse.isEmpty()) {

      // process receiveMessageResponse

      DeleteMessageBatchRequest deleteMessageBatchRequest =
          new DeleteMessageBatchRequest();
      deleteMessageBatchRequest.setQueueName(queueName);
      for (ReceiveMessageResponse response : receiveMessageResponse) {
        deleteMessageBatchRequest.addToDeleteMessageBatchRequestEntryList(
            new DeleteMessageBatchRequestEntry(response.getReceiptHandle()));
      }
      messageClient.deleteMessageBatch(deleteMessageBatchRequest);
    }
  }

删除队列:

  DeleteQueueRequest deleteQueueRequest = new DeleteQueueRequest(queueName);
  queueClient.deleteQueue(deleteQueueRequest);

更多更详细的示例请参考各语言SDK下的Example, 或直接参考:SDK Example

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文