RabbitMQ入门参考博客:http://m.blog.csdn.net/article/details?id=50487028(内含介绍、环境配置及基本实现说明)

RabbitMQ官方文档参考,发送Topic exchange队列:http://www.rabbitmq.com/tutorials/tutorial-five-java.html(内含各种语言的各种实现方法)

项目部分代码:

1.config类

package com.ict.common;public class Hxyconfig {
//MQ服务器的Host和用户名密码
public static String sendMQHostHXY="10.1.4.31";
public static String UserNameHXY="admin";
public static String PassWordHXY="admin";
public static int portHXY=5672;//
public static String exchangeName="out_exchange_ict";//多久发送一次MQ数据
public static int sendSecond=5;//消息队列名
//船舶异常
public static String queAnomaly="out_ict_anomaly";
//网络监控
public static String queAISNetworkState="out_ict_ais_network_state";
//船数统计
public static String queShipStatistic="out_ict_ship_statistic";
//雷达融合
public static String queRadarFusion="out_ict_radar_fusion";//Java后端程序部署服务器地址
public static String HostHXY="10.1.2.11";
}

2.定时请求接口并且发送topic exchange的消息到服务器

package com.ict.common;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URL;
import java.net.URLConnection;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Timer;
import java.util.TimerTask;import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;public class HttpRequest {/**** @param url*            发送请求的URL* @param param*            请求参数,请求参数应该是 name1=value1&name2=value2 的形式。* @return URL 所代表远程资源的响应结果*/public static String sendGet(String url, String param) {String result = "";BufferedReader in = null;try {String urlNameString = url + "?" + param;URL realUrl = new URL(urlNameString);// 打开和URL之间的连接URLConnection connection = realUrl.openConnection();// 设置通用的请求属性connection.setRequestProperty("accept", "*/*");connection.setRequestProperty("connection", "Keep-Alive");connection.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");// 建立实际的连接connection.connect();// 获取所有响应头字段Map<String, List<String>> map = connection.getHeaderFields();// 遍历所有的响应头字段for (String key : map.keySet()) {
//                System.out.println(key + "--->" + map.get(key));}// 定义 BufferedReader输入流来读取URL的响应in = new BufferedReader(new InputStreamReader(connection.getInputStream()));String line;while ((line = in.readLine()) != null) {result += line;}} catch (Exception e) {System.out.println("发送GET请求出现异常!" + e);e.printStackTrace();}// 使用finally块来关闭输入流finally {try {if (in != null) {in.close();}} catch (Exception e2) {e2.printStackTrace();}}return result;}/*** 向指定 URL 发送POST方法的请求** @param url*            发送请求的 URL* @param param*            请求参数,请求参数应该是 name1=value1&name2=value2 的形式。* @return 所代表远程资源的响应结果*/public static String sendPost(String url, String param) {PrintWriter out = null;BufferedReader in = null;String result = "";try {URL realUrl = new URL(url);// 打开和URL之间的连接URLConnection conn = realUrl.openConnection();// 设置通用的请求属性conn.setRequestProperty("accept", "*/*");conn.setRequestProperty("connection", "Keep-Alive");conn.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");// 发送POST请求必须设置如下两行conn.setDoOutput(true);conn.setDoInput(true);// 获取URLConnection对象对应的输出流out = new PrintWriter(conn.getOutputStream());// 发送请求参数out.print(param);// flush输出流的缓冲out.flush();// 定义BufferedReader输入流来读取URL的响应in = new BufferedReader(new InputStreamReader(conn.getInputStream()));String line;while ((line = in.readLine()) != null) {result += line;}} catch (Exception e) {System.out.println("发送 POST 请求出现异常!"+e);e.printStackTrace();}//使用finally块来关闭输出流、输入流finally{try{if(out!=null){out.close();}if(in!=null){in.close();}}catch(IOException ex){ex.printStackTrace();}}return result;}static Channel channel_queAnomaly = null;public static void main(String[] args) {/** * 创建连接连接到MabbitMQ */ConnectionFactory factory = new ConnectionFactory();//设置MabbitMQ所在主机ip或者主机名factory.setHost(Hxyconfig.sendMQHostHXY);        factory.setUsername(Hxyconfig.UserNameHXY);factory.setPassword(Hxyconfig.PassWordHXY);factory.setPort(Hxyconfig.portHXY);           //创建一个连接Connection connection = null;
try {
connection = factory.newConnection();
//创建一个频道
channel_queAnomaly = connection.createChannel();//指定一个exchangeName
channel_queAnomaly.exchangeDeclare(Hxyconfig.exchangeName, "topic");
} catch (IOException e1) {
e1.printStackTrace();
}// 定时请求接口数据,并且将返回的数据通过MQ消息队列发送到服务器Timer timer = new Timer();SendRabbit sr=new SendRabbit();        String urlHXYAnomaly="http://"+Hxyconfig.HostHXY+":8080/HxySys/realTime/HXYAnomaly.do";String urlhXYShipStatistic="http://"+Hxyconfig.HostHXY+":8080/HxySys/realTime/HXYShipStatistic.do";String urlhXYAISNetwork="http://"+Hxyconfig.HostHXY+":8080/HxySys/realTime/HXYAISNetwork.do";String urlhXYAISRadarFusion="http://"+Hxyconfig.HostHXY+":8080/HxySys/realTime/HXYAISRadarFusion.do";timer.schedule(new TimerTask() {public void run() {Date da=new Date();        System.out.println("Send RabbitMQ Start : "+da.toString());             //发送 GET 请求String hXYAnomaly=HttpRequest.sendGet(urlHXYAnomaly, "key=123&v=456");   String hXYShipStatistic=HttpRequest.sendGet(urlhXYShipStatistic, "key=123&v=456");String hXYAISNetwork=HttpRequest.sendGet(urlhXYAISNetwork, "key=123&v=456");String hXYAISRadarFusion=HttpRequest.sendGet(urlhXYAISRadarFusion, "key=123&v=456");try {if(hXYAnomaly.equals("")){            }else{
//                 该方法和本类中的方法一致sr.SendMQ2(channel_queAnomaly,hXYAnomaly,Hxyconfig.queAnomaly);}if(hXYAISRadarFusion.equals("")){}else{sr.SendMQ2(channel_queAnomaly,hXYAISRadarFusion,Hxyconfig.queRadarFusion);}sr.SendMQ2(channel_queAnomaly,hXYShipStatistic,Hxyconfig.queShipStatistic);sr.SendMQ2(channel_queAnomaly,hXYAISNetwork,Hxyconfig.queAISNetworkState);}catch (Exception e){e.printStackTrace();return;}}},0,1000*Hxyconfig.sendSecond);// 设定指定的时间time,此处为2000毫秒//发送 POST 请求/*String sr=HttpRequest.sendPost("http://www.iyfang.com/legoguide/server/product/query", "set_number=42009-1&lang=zh-CN");System.out.println(sr);*/} public void SendMQ2(Channel channel,String jsStr,String routingKey) throws java.io.IOException{ //往队列中发出一条消息channel.basicPublish(Hxyconfig.exchangeName, routingKey, null,jsStr.getBytes());
//        System.out.println(jsStr);}}

Java_定时请求后端接口数据发送RabbitMQ消息到指定MQ服务器相关推荐

  1. vue 项目 前端 模拟后端接口数据(vue2,vue3)

    项目中或者平常自己创建demo的过程中,往往需要后端配合,但是有时候没有后端,又需要数据,此时就展示了我们前端的强大之处,自己模拟后端接口数据. 如果自定义一个模拟后端数据, 首先创建一个文件夹放置后 ...

  2. vue + element 自定义表单验证的时候 需要通过请求后端接口验证

    vue + element 自定义表单验证的时候 需要通过请求后端接口验证 做vue项目的时候遇到了一个需求,在验证某个表单项时不仅需要是必填项而且要去通过接口校验是否有重复值. // templat ...

  3. 微信小程序 - 在自定义组件中请求后端 API 数据接口(引入该组件的页面触发)组件在哪个生命周期钩子函数中请求接口数据呢?

    前言 我开发了一个 A 页面,然后在 A 页面引入了一个组件 B ,我想在 B 组件中加载进来的时候执行一个后端请求,获取数据进行 B 组件渲染. 今天遇到这么一个问题,我写好的小程序 组件(comp ...

  4. 记录--如何优雅地校验后端接口数据

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 背景 最近新接手了一批项目,还没来得及接新需求,一大堆bug就接踵而至,仔细一看,应该返回数组的字段返回了 null,或者没有返回,甚至返 ...

  5. 微信小程序请求后端php数据

    要在微信小程序中请求后端数据,可以使用微信小程序提供的 wx.request() API.这个API可以用于向指定的 URL 发送请求并获取响应.以下是一个简单的示例代码: wx.request({u ...

  6. vue中根据后端接口数据控制按钮的显示与隐藏(手动添加响应式this.$set())

    项目涉及到的问题,按钮需要根据后端返回的参数情况,实现按钮的显示与隐藏. 效果如图: 1.查看后端接口 get请求,需要传businessId和compoCode两个参数,返回的data有数据就显示按 ...

  7. uni-app请求后端接口和请求

    后端接口是第三方涉及跨域问题,由于我自己没有后台服务器,无法采用cors进行设置响应头,所以采用和vue原理一样的nginx代理 例如要请求的地址是http://ceshi3.dishait.cn/a ...

  8. vue中使用echarts实现动态数据绑定、获取后端接口数据

    之前几篇echarts的文章是实现了静态的柱状图.折线图.饼状图.地图,在项目中我们肯定是需要获取后端接口,将后端返回的数据显示在图表上,所以这次就记录一下如何实现echarts的动态数据绑定. 简单 ...

  9. elementUI table 添加合计行,合计行放置顶部(标题下内容上),合计行渲染所有数据的和(取后端接口数据),合并合计单元格。

    1.将show-summary设置为true就会在表格尾部展示合计行. <el-table:data="tableData"id="tableData"s ...

最新文章

  1. 最快破亿,荣耀实力验证中高端领军地位
  2. 每日一皮:在调试时,将断点设置在错误的位置...
  3. linux设置逻辑卷进不了图形界面,LVM逻辑卷管理器图形界面操作
  4. qt中生成含有中文的json文件和解析json文件
  5. python制作的游戏如何转化为swf_从纯Python中的Flash文件(.swf)获取维度
  6. python datasets 下载_frds:金融学术研究数据的Python库
  7. UIPageControl 分页
  8. 深度装机大师一键重装_深度装机大师一键重装软件
  9. 中文简体繁体转换(JS 字符串 简体转繁体 繁体转简体)
  10. Vue H5微信分享功能实现
  11. OGG FOR BIGDATA 安装(修正)
  12. Linuxer公众号更名为quot;Linux阅码场quot;公告
  13. java + jfreechart + itextpdf创建折线图饼图并导出为pdf
  14. pytorch-->optimizer.zero_grad()、loss.backward()、optimizer.step()和scheduler.step()
  15. oracle 用impdp 导入dmp文件
  16. netstat -an
  17. 疫情下的通信人:你我的岁月静好,是谁在负重前行?
  18. c语言书本答案揭安全,c语言书本练习答案.docx
  19. 基于matlab的单周期控制三相高功率因数并网逆变器的建模与仿真,基于Matlab的单周期控制三相高功率因数并网逆变器的建模与仿真...
  20. EF Core的学习之路01

热门文章

  1. python web server 知乎_“知乎网”技术方案初探
  2. VC6.0特殊功能-根据汉字转成拼音字符
  3. 2021阿里云申请免费SSL证书最新流程
  4. [阅读记录]《数据分析师求职面试指南》-2
  5. 初学编程者开始Revit 二次开发自学教程
  6. MYSQL5.7下载安装详细教程
  7. 扩散模型加持下,机器人模型DALL-E-Bot可以轻松完成自主重新排列任务
  8. 原神QQ机器人云崽bot安卓手机整合包解压即用安装教程
  9. 利用ApacheCXF自动生成webservice的客户端代码
  10. 蓝鲸智云App应用部署(完整版)