全部产品
云市场

Queue 推送

更新时间:2019-07-22 15:22:18

Queue Endpoint

用户使用已创建Queue作为Endpoint对Topic内容进行订阅;当有消息发布到Topic中时,Topic会通过内部数据通道,将Topic中的消息推送到各个订阅的Queue中。用户只需对订阅的Queue进行轮询拉取即可。

使用场景

  1. 订阅者无需保持在线状态;
  2. 订阅者机器部署在VPC环境;
  3. 订阅者需要通过高并发提高消费速度;

控制台订阅步骤

1. 创建主题Topic

image

2. 在同一地域创建队列Queue

image

3. 选中已创建的Topic,点击“订阅详情”进入订阅管理页面

image

4. 点击“创建订阅”,选择推送类型为“队列”,同时输入已创建的队列名(此处并不会对队列是否存在做检测,请确保相应的队列已经创建)

image

Java SDK订阅代码示例

  1. client = new DefaultMNSClient(ServiceSettings.getMNSEndpoint(),
  2. ServiceSettings.getMNSAccessKeyId(),
  3. ServiceSettings.getMNSAccessKeySecret());
  4. // 创建队列Queue
  5. String queueName = "JavaSDKTestQueue";
  6. String subName = "JavaTestSub"
  7. QueueMeta queueMeta = new QueueMeta();
  8. queueMeta.setQueueName(queueName);
  9. CloudQueue queue = client.createQueue(queueMeta);
  10. // 创建主题Topic
  11. String topicName = "SampleTopic";
  12. TopicMeta meta = new TopicMeta();
  13. meta.setTopicName(topicName);
  14. topic = client.createTopic(meta);
  15. // 使用队列作为endpoint进行订阅
  16. String queueEndpoint = topic.generateQueueEndpoint(queueName);
  17. SubscriptionMeta subMeta = new SubscriptionMeta();
  18. subMeta.setSubscriptionName(subName);
  19. subMeta.setNotifyStrategy(SubscriptionMeta.NotifyStrategy.EXPONENTIAL_DECAY_RETRY);
  20. subMeta.setEndpoint(queueEndpoint);
  21. String subUrl = topic.subscribe(subMeta);