1.3.3 代码示例

优质
小牛编辑
130浏览
2023-12-01

代码示例 (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