一个简单的java程序,用于RabbitMQ日志监控
RabbitMQ的所有日志,都会发给topic类型的exchange “amq.rabbitmq.log” routingKey 有 debug,info,waring,error. 如果接收所有类型日志,可以用 #
package logs; import java.io.IOException;
import java.util.concurrent.TimeoutException; import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.DefaultConsumer;
import com.rabbitmq.client.Envelope;
import com.rabbitmq.client.AMQP.BasicProperties; import utils.ChannelUtils; public class ListenerRabbitMQLogs { private static final String QUEUE_NAME_DEBUG = "queue_debug";
private static final String QUEUE_NAME_INFO = "queue_info";
private static final String QUEUE_NAME_WARNING = "queue_warning";
private static final String QUEUE_NAME_ERROR = "queue_error"; private static final String EXCHANGE_NAME_LOG = "amq.rabbitmq.log"; public static void main(String[] args) throws IOException, TimeoutException { Connection connection = ChannelUtils.getConnection("ListenerLog"); Channel channelDebug = connection.createChannel();
Channel channelInfo = connection.createChannel();
Channel channelWarning = connection.createChannel();
Channel channelError = connection.createChannel(); channelDebug.queueDelete(QUEUE_NAME_DEBUG);
channelDebug.queueDeclare(QUEUE_NAME_DEBUG, false, false, false, null); channelInfo.queueDelete(QUEUE_NAME_INFO);
channelInfo.queueDeclare(QUEUE_NAME_INFO, false, false, false, null); channelWarning.queueDelete(QUEUE_NAME_WARNING);
channelWarning.queueDeclare(QUEUE_NAME_WARNING, false, false, false, null); channelError.queueDelete(QUEUE_NAME_ERROR);
channelError.queueDeclare(QUEUE_NAME_ERROR, false, false, false, null); channelDebug.queueBind(QUEUE_NAME_DEBUG, EXCHANGE_NAME_LOG, "debug");
channelInfo.queueBind(QUEUE_NAME_INFO, EXCHANGE_NAME_LOG, "info");
channelWarning.queueBind(QUEUE_NAME_WARNING, EXCHANGE_NAME_LOG, "warning");
channelError.queueBind(QUEUE_NAME_ERROR, EXCHANGE_NAME_LOG, "error"); channelDebug.basicConsume(QUEUE_NAME_DEBUG, new LogsConsumer(channelDebug,"Debug"));
channelInfo.basicConsume(QUEUE_NAME_INFO, new LogsConsumer(channelInfo,"Info"));
channelWarning.basicConsume(QUEUE_NAME_WARNING, new LogsConsumer(channelWarning,"Warning"));
channelError.basicConsume(QUEUE_NAME_ERROR, new LogsConsumer(channelError,"Error")); } } class LogsConsumer extends DefaultConsumer { private String logLevel; public LogsConsumer(Channel channel,String logLevel) {
super(channel);
this.logLevel = logLevel;
} @Override
public void handleDelivery(String consumerTag, Envelope envelope, BasicProperties properties, byte[] body)
throws IOException { System.out.println(logLevel+":"+new String(body)); // 使用手动确认模式,这里需要确认收到消息。
getChannel().basicAck(envelope.getDeliveryTag(), false);
} }
package utils; import java.io.IOException;
import java.util.concurrent.TimeoutException; import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory; public class ChannelUtils { public static Channel getChannelInstance(String ConnectionDescription) {
try {
return getConnection(ConnectionDescription).createChannel();
} catch (Exception e) {
throw new RuntimeException("获取Channel连接失败");
}
} public static Connection getConnection(String ConnectionDescription) throws IOException, TimeoutException {
ConnectionFactory connectionFactory = getConnectionFactory();
return connectionFactory.newConnection(ConnectionDescription);
} public static ConnectionFactory getConnectionFactory() {
ConnectionFactory connectionFactory = new ConnectionFactory(); connectionFactory.setHost("192.168.1.111");
connectionFactory.setPort(5672);
connectionFactory.setVirtualHost("/");
connectionFactory.setUsername("drs");
connectionFactory.setPassword("123456"); return connectionFactory;
} }
一个简单的java程序,用于RabbitMQ日志监控的更多相关文章
- Java入门篇(一)——如何编写一个简单的Java程序
最近准备花费很长一段时间写一些关于Java的从入门到进阶再到项目开发的教程,希望对初学Java的朋友们有所帮助,更快的融入Java的学习之中. 主要内容包括JavaSE.JavaEE的基础知识以及如何 ...
- Linux环境下部署完JDK后运行一个简单的Java程序
前言 前一篇文章详细讲解了如何在Windows环境下安装虚拟机+Linux系统,并且成功部署了JDK. 不过部署完JDK之后,我们判断部署是否成功的依据是看"java -version&qu ...
- 一个简单的Java程序例子以及其几种注释
在说道主题前,先来啰嗦两句,o()︿︶)o 唉,不说两句心里就有个疙瘩,也许这就是所谓的强迫症吧,好了说说我想啰嗦的,其实也就是这样子的,关于Java开发工具箱的下载以及环境的配置.Java开发工具箱 ...
- 一个简单的Java程序
一个.NET技术还是很菜的水平的猿人现在要去学习Java不知道是坏是好,无从得知啊! 不过在网上看了好多Java方面的简单例子,感觉Java还是蛮不错的么!不管以后怎么样啦,先开始自己的Java菜鸟之 ...
- java基础学习02(简单的java程序)
简单的java程序 一.完成的目标 1. 理解java程序的基本组成 2. 如何对程序代码进行注释 3. java标识符的命名规则 4. 了解java中的关键字 5. 使用java定义变量或声明变量 ...
- Java学习笔记 11/15:一个简单的JAVA例子
首先来看一个简单的 Java 程序. 来看下面这个程序,试试看是否看得出它是在做哪些事情! 范例:TestJava.java // TestJava.java,java 的简单范例 public ...
- 编写运行最简单的java程序——使用记事本编写java程序
第一个java程序--使用记事本编辑 经过上篇文章的java环境搭建成功的小伙伴们可以在自己的计算机上编写属于自己的java程序了yo~ 还没有搭建环境变量的小伙伴请转移到上一篇的随笔中去完成搭建. ...
- 如何使用eclipse运行简单的java程序
打开eclipse,选择“file——new——Java project” 为我们的java项目取一个名字,然后点击完成. 这时候左侧列表就有了我们刚才新建的java项目,点开项目,在src目 ...
- 【Java】一个简单的Java应用程序
简单记录,Java 核心技术卷I 基础知识(原书第10 版) 一个简单的Java应用程序"Hello, World!" Hello, World! Goodbye,World! 一 ...
随机推荐
- samtools 使用简述
功能如下: 1.View 主要功能讲sam文件转位bam文件. 涉及的参数: -b 输出bam格式..默认是sam文件 -h 输出的sam文件带header..默认不带 -H 仅仅输出header - ...
- 关于最新create-react-app使用react-app-rewired2.x添加webpack配置
使用过create-react-app(以下简称cra)的朋友都知道,这是react官方的一款脚手架工具,内部集成了babel,webpack,webpack-dev-server等等. 以前我们要在 ...
- matlab 三维激光雷达点云的地面与障碍物检测
基于激光雷达的地面与障碍物检测 这个例子告诉我们如何去检测地平面并且找到三维LIDAR数据中与车相近的障碍物. 这个过程能够方便我们对汽车导航的可行驶区域规划. 注:每一帧的雷达属于都被存储为三维的雷 ...
- mvc5之文件上传
在写这篇博客之前,被网上的博客坑了一个遍. 浪费了很多的时间 最后还是靠一位兄弟解决的问题,不得不说,虽然网上资源多.但是大多数都是水货.如果那些人可以解决你的问题,那我这里明显就没用了,除非你和我一 ...
- NPM 报错--fs: re-evaluating native module sources is not supported. If you are using the graceful-fs module
fs: re-evaluating native module sources is not supported. If you are using the graceful-fs module 解决 ...
- mysql 循环、游标
mysql 循环只能在存储过程.代码记录 CREATE DEFINER=`front`@`%` PROCEDURE `a_1`() BEGIN -- 声明变量,接收游标循环变量 DECLARE _co ...
- ZedBoard前期准备工作
1. 资源下载 内核:https://github.com/Xilinx/linux-xlnx/releases uboot:https://github.com/Xilinx/u-boot-xlnx ...
- fflush 和 fsync 的区别
int fflush(FILE *stream);If stream points to an output stream or an update stream in which the most ...
- learning makefile foreach
- 用批处理修改hotst文件提示“拒绝访问”解决方法
执行批处理命令时出现“拒绝访问”情况,把路径地址改为系统路名变量即可: 如 提示拒绝访问: echo 127.0.0.1 www.dujinchi.com >> C:\Windows\Sy ...