package com.yunda.app.service;

import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner; import net.sf.json.JSONArray;
import net.sf.json.JSONObject; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import com.yunda.app.entity.vo.MessageQueue;
import com.yunda.app.entity.vo.Page;
import com.yunda.app.util.StaticVar; @Service(value = "messageQueueService")
@Transactional
public class MessageQueueServiceImpl implements MessageQueueService {
private Scanner scanner; @Override
public Page pageQuery(MessageQueue messageQueue) {
Page page = new Page();
try {
StringBuilder ipText = new StringBuilder();
String url = StaticVar.RABBITMQ_URL;
// 用户名密码部分
String username = StaticVar.RABBITMQ_USERNAME;
String password = StaticVar.RABBITMQ_PASSWORD;
String input = username + ":" + password;
String encoding = new String((new sun.misc.BASE64Encoder()).encode(input.getBytes()));
URL myURL = new URL(url);
HttpURLConnection conn = (HttpURLConnection) myURL.openConnection();
conn.setConnectTimeout(6 * 1000);
conn.setReadTimeout(6 * 1000);
conn.setRequestProperty("Authorization", "Basic " + encoding);
//如果连接成功,获得返回字符串
if (conn.getResponseCode() == 200) {
InputStream inputStream = conn.getInputStream();
scanner = new Scanner(inputStream, "utf-8");
while (scanner.hasNext()) {
ipText.append(scanner.next());
}
if (inputStream != null) {
inputStream.close();
}
conn.disconnect();
JSONArray jsonArray = JSONArray.fromObject(ipText.toString());
List<MessageQueue> mqList = new ArrayList<MessageQueue>();
int pageNo = messageQueue.getPageNo();
int pageSize = messageQueue.getPageSize();
//如果json有子项,说明有消息队列
if (jsonArray != null && jsonArray.size() > 0) {
String messageQueueName = messageQueue.getName();
//不是搜索某个消息队列
if (messageQueueName == null) {
//分页选取消息队列
for (int i = (pageNo - 1) * pageSize; i < pageNo
* pageSize; i++) {
if (i == jsonArray.size()) {
break;
}
MessageQueue mq = new MessageQueue();
JSONObject jsonobject = jsonArray.getJSONObject(i);
//获取消息队列name等字段
mq.setName(jsonobject.getString("name"));
mq.setMessagesReady(jsonobject
.getInt("messages_ready"));
mq.setMessagesUnacknowledged(jsonobject
.getInt("messages_unacknowledged"));
mq.setMessages(jsonobject.getInt("messages"));
mq.setConsumers(jsonobject.getInt("consumers"));
mq.setState(jsonobject.getString("state"));
mqList.add(mq);
}
if (mqList.size() > 0) {
page.setTotal(jsonArray.size());
page.setRows(mqList);
}
} else {//是搜索某个消息队列
MessageQueue mq = new MessageQueue();
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject jsonobject = jsonArray.getJSONObject(i);
//获取消息队列name字段,判断是否和搜索队列名称相同
String jsonobjectName=jsonobject.getString("name");
if (jsonobjectName.equals(messageQueueName)) {
mq.setName(messageQueueName);
mq.setMessagesReady(jsonobject
.getInt("messages_ready"));
mq.setMessagesUnacknowledged(jsonobject
.getInt("messages_unacknowledged"));
mq.setMessages(jsonobject.getInt("messages"));
mq.setConsumers(jsonobject.getInt("consumers"));
mq.setState(jsonobject.getString("state"));
mqList.add(mq);
break;
}
}
if (mqList.size() > 0) {
page.setTotal(1);
page.setRows(mqList);
}
} } }
} catch (Exception e) {
e.printStackTrace();
}
return page;
}
}
package com.yunda.app.entity.vo;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
* 分页信息实体
*
* @author JS
* @since 2013-04-09
*/
@SuppressWarnings("serial")
public class Page implements Serializable { /**总记录数*/
private long total;
/**当前页记录,类型为List*/
private Object rows;
/**列表底部显示的数据,例如统计数据,类型为List*/
private Object footer; /**
* 构造方法,只构造空页.
*/
public Page() {
this(0, new ArrayList());
} /**
* 不分页列表数据对象默认构造方法
*
* @param rows 列表数据
*/
public Page(Object rows) {
this.rows = rows;
if(null != rows && rows instanceof List) {
this.total = ((List)rows).size();
} else if (null != rows){
this.total = 1;
}
} /**
* 分页列表数据对象默认构造方法(仅含含列表)
*
* @param rows 列表数据
*/
public Page(long total, Object rows) {
this.total = total;
this.rows = rows;
} /**
* 默认分页构造方法(含列表和表底)
*
* @param total 总记录数
* @param rows 页数据
* @param footer 页脚数据
*/
public Page(long total, Object rows, Object footer) {
this.total = total;
this.rows = rows;
this.footer = footer;
} /**
* 取当前页中的记录.
*/
public Object getRows() {
return rows;
} /**
* 设置当前页中的记录.
*/
public void setRows(Object rows){
this.rows = rows;
} /**
* 获取总记录数
*
* @return
*/
public long getTotal() {
return total;
} /**
* 设置总记录数
*
* @param total
*/
public void setTotal(long total) {
this.total = total;
} public Object getFooter() {
return footer;
} public void setFooter(Object footer) {
this.footer = footer;
} /**
* 获取任一页第一条数据在数据集的位置(不考虑总记录数)
*
* @param pageNo 从1开始的页号
* @param pageSize 每页记录条数
* @return 该页第一条数据
*/
public static long getStartOfPage(int pageNo, int pageSize) {
long start = (pageNo - 1) * pageSize;
return start < 0 ? 0 : start;
} /**
* 获取任一页第一条数据在数据集的位置(考虑总记录数并做调整)
*
* @param total 总记录数
* @param pageNo 从1开始的页号
* @param pageSize 每页记录条数
* @return 该页第一条数据
*/
public static long getStartOfPage(long total, int pageNo, int pageSize) {
long start = (pageNo - 1) * pageSize;
//如果超过了最后一行,则自动退回到最后一页的第一行
if (start >= total) {
start = Page.getStartOfPage(pageNo-1, pageSize);
}
return start < 0 ? 0 : start;
}
}

查询rabbitmq的更多相关文章

  1. rabbitmq高级消息队列

    rabbitmq使用 什么是消息队列 消息(Message)是指在应用间传送的数据.消息可以非常简单,比如只包含文本字符串,也可以很复杂,可以包含嵌入对象. 消息队列是一种应用间的通信方式,消息发送后 ...

  2. CentOS 6快捷安装RabbitMQ教程

    1.安装Erlang yum install erlang 2.安装RabbitMQ yum install rabbitmq-server 3.配置开机自启动 chkconfig rabbitmq- ...

  3. 消息队列之 RabbitMQ

    https://www.jianshu.com/p/79ca08116d57 关于消息队列,从前年开始断断续续看了些资料,想写很久了,但一直没腾出空,近来分别碰到几个朋友聊这块的技术选型,是时候把这块 ...

  4. RabbitMQ,Apache的ActiveMQ,阿里RocketMQ,Kafka,ZeroMQ,MetaMQ,Redis也可实现消息队列,RabbitMQ的应用场景以及基本原理介绍,RabbitMQ基础知识详解,RabbitMQ布曙

    消息队列及常见消息队列介绍 2017-10-10 09:35操作系统/客户端/人脸识别 一.消息队列(MQ)概述 消息队列(Message Queue),是分布式系统中重要的组件,其通用的使用场景可以 ...

  5. 转 消息队列之 RabbitMQ

    转 https://www.jianshu.com/p/79ca08116d57 消息队列之 RabbitMQ 预流 2017.05.06 16:03* 字数 4884 阅读 80990评论 18喜欢 ...

  6. RabbitMQ 使用

    安装步骤略过. 启动 启动很简单,找到安装后的 RabbitMQ 所在目录下的 sbin 目录,可以看到该目录下有6个以 rabbitmq 开头的可执行文件,直接执行 rabbitmq-server ...

  7. Python3.7.1学习(六)RabbitMQ在Windows环境下的安装

    Windows下安装RabbitMQ 环境配置 部署环境 部署环境:windows server 2008 r2 enterprise(本文安装环境Win7) 官方安装部署文档:http://www. ...

  8. SpringBoot系列之RabbitMQ使用实用教程

    SpringBoot系列之RabbitMQ使用实用教程 @ 目录 1. 消息队列概述 1.1 MQ的概述 1.2 MQ目的地形式 2. 消息队列实现方式 2.1 常见MQ框架 2.2 MQ实现方式 3 ...

  9. Docker中使用RabbitMQ

    安装Docker yum install docker //安装完成以后,可以查看一下docker的版本 docker -v //Docker version 1.13.1, build 64e998 ...

随机推荐

  1. Hadoop问题集锦

    1.Permission denied: user=root, access=WRITE, inode="/user":hdfs:supergroup 使用Spark进行处理的时候 ...

  2. puppet前端管理工具foreman-proxy bind 127.0.0.1:8443问题解决

    最近在玩foreman,发现部署foreman-proxy的时候,总是出现8443bind在127.0.0.1端口,导致无法访问的情况. 如下图: 经过strace -o log.txt bin/sm ...

  3. JSR-303规范,Bean Validation

    一: JSR 303是JAVA EE 6中的一项子规范,叫做Bean Validation,官方参考实现是Hibernate Validator,此实现与Hibernate ORM没有任何关系.JSR ...

  4. mysql命令之一:mysql常用命令之一

    一.登录 1.本地登录:MySQL 连接本地数据库,用户名为“root”,密码“123”(注意:“-p”和“123” 之间不能有空格) C:\>mysql -h localhost -u roo ...

  5. Scala总结

    Scala总结 ===概述 scala是一门以Java虚拟机(JVM)为目标运行环境并将面向对象和函数式编程的最佳特性结合在一起的静态类型编程语言. scala是纯粹的面向对象的语言.java虽然是面 ...

  6. [原创]Javascript 利用mousetrap.js进行键盘事件操作

    我们日常开发中,会遇到js的键盘操作,例如回车提交表单之类的.或者按下某个键执行某个方法.无意中发现一个大小不到4K的js文件,它非常方便的操作键盘事件. 自己也尝试了一下:具体代码如下: 详情可以去 ...

  7. java之Scanner

    参考http://how2j.cn/k/operator/operator-scanner/658.html#nowhere 需要用到从控制台输入数据,所以需要用到Scanner类 使用Scanner ...

  8. URAL 2018 The Debut Album (DP)

    题意:给出n长度的数列,其实1的连续个数不超过a,2的连续个数不超过b. 析:dp[i][j][k] 表示前 i 个数,以 j 结尾,并且连续了k个长度,要用滚动数组,要不然MLE. 代码如下: #p ...

  9. RDS mysql 与ECS自建mysql做主从备份

    由于公司要组建一个数据中心,简而言之就是把各个地方的数据都同步到一个地方,做BI建模和数据分析. 一般来说这种需求是由hadoop来实现的,但由于预算不够..所以,来个low点的办法吧 以下主要是讲r ...

  10. 一步步教你学会browserify

    本文来自网易云社区 作者:孙圣翔 注意 文章需要边看边练习,不然你可能忘得速度比看的还快. 原文地址: http://my.oschina.net/goskyblue/blog/552284 Brow ...