版权声明:知识本无差别,何必在意你我? https://blog.csdn.net/qq_33774822/article/details/70458363
消息队列(Message Queue,简称 MQ)是阿里巴巴集团中间件技术部自主研发的专业消息中间件。
也就是说他只是一个中间商,我们将消息提交到阿里云上面,然后由阿里云的MQ组件给我们将消息分发。
实现逻辑:
我们通过accessId,secretKey和mnsEndpoint来建立与阿里云的连接,然后将我们的数据上传到阿里云上,数据主要有两种方式:一个是订阅消息(Topic),一个是队列消息(Queue),然后由阿里云对我们的消息进行分发。
两种方式的区别:
功能实现:
1.检测提供信息是否正确,也就是输入相应的信息进行连接测试。
MNSMQConnection connection = new MNSMQConnection();
connection.setAccessId(“XXXXX”);
connection.setSecretKey("XXXXXX");
connection.setMnsEndpoint(''XXXXXX");
try {
connection.getQueue("12121");
// 测试成功才能添加或修改
return mqDao.save(MQConverter.convertP(mq));
} catch (Exception e) {
e.printStackTrace();
return ActionResult.fail(e.getMessage());
}
2.查看这个账户里面有多少个主题
CloudAccount cloudAccount = new CloudAccount("XXXXXXX","XXXXXXX", "XXXXXX");
MNSClient mnsClient = cloudAccount.getMNSClient();
PagingListResult<TopicMeta> topics = mnsClient.listTopic("", "", 100);
System.out.println("主题数量:"+topics.getResult().size());
for (TopicMeta topic : topics.getResult())
{ System.out.println(topic.getTopicName()); }
CloudAccount cloudAccount = new CloudAccount("XXXX","XXXX", "XXXXX");
MNSClient mnsClient = cloudAccount.getMNSClient();
PagingListResult<QueueMeta> queues = mnsClient.listQueue("", "", 100);
System.out.println("消息队列的数量:"+queues.getResult().size());
for (QueueMeta queue : queues.getResult()) {
System.out.println(queue.getQueueName());
}
4.查看队列里面的消息数量
CloudQueue cloudQueue = mnsClient.getQueueRef(queues.getResult().get(0).getQueueName());
if (cloudQueue != null) {
List<Message> messages = cloudQueue.batchPeekMessage(10);
if (messages != null) {
System.out.println("消息数");
}
}
最近由我写mq的控制台,所以写下来,上面的XXX是实例,真实的分别为accessId,secretKey,mnsEndpoint,因为是公司的相关信息,就不贴出来了。