java监控rabbitMq服务状态,一个简单的java程序,用于RabbitMQ日志监控

该博客展示了如何创建一个Java程序来监听RabbitMQ的日志消息。程序通过建立多个通道分别处理不同级别的日志(Debug, Info, Warning, Error),并为每个级别创建队列,将消息绑定到交换机'amq.rabbitmq.log'上。同时,程序实现了手动确认消息接收的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

packagelogs;importjava.io.IOException;importjava.util.concurrent.TimeoutException;importcom.rabbitmq.client.Channel;importcom.rabbitmq.client.Connection;importcom.rabbitmq.client.DefaultConsumer;importcom.rabbitmq.client.Envelope;importcom.rabbitmq.client.AMQP.BasicProperties;importutils.ChannelUtils;public classListenerRabbitMQLogs {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) throwsIOException, 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 extendsDefaultConsumer {privateString logLevel;publicLogsConsumer(Channel channel,String logLevel) {super(channel);this.logLevel =logLevel;

}

@Overridepublic void handleDelivery(String consumerTag, Envelope envelope, BasicProperties properties, byte[] body)throwsIOException {

System.out.println(logLevel+":"+newString(body));//使用手动确认模式,这里需要确认收到消息。

getChannel().basicAck(envelope.getDeliveryTag(), false);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值