要实现将 RabbitMQ 队列中的过车数据按照过车时间每 5 分钟保存到 Redis,可以使用 Java 编写一个程序来实现。下面是一个简单的示例代码:

import com.rabbitmq.client.*;
import redis.clients.jedis.Jedis;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class RabbitMQToRedis {
    private static final String QUEUE_NAME = "car_queue";
    private static final String REDIS_KEY_PREFIX = "car_data:";
    private static final int SAVE_INTERVAL = 5; // 保存间隔,单位为分钟

    public static void main(String[] args) throws Exception {
        // 连接 RabbitMQ
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("localhost");
        Connection connection = factory.newConnection();
        Channel channel = connection.createChannel();
        channel.queueDeclare(QUEUE_NAME, false, false, false, null);

        // 连接 Redis
        Jedis jedis = new Jedis("localhost");

        // 监听 RabbitMQ 队列
        Consumer consumer = new DefaultConsumer(channel) {
            @Override
            public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
                String message = new String(body, StandardCharsets.UTF_8);

                // 获取当前时间
                LocalDateTime now = LocalDateTime.now();
                DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
                String currentTime = now.format(formatter);

                // 保存到 Redis
                String redisKey = REDIS_KEY_PREFIX + currentTime;
                jedis.set(redisKey, message);

                // 每 5 分钟保存一次
                if (now.getMinute() % SAVE_INTERVAL == 0) {
                    jedis.save();
                }
            }
        };
        channel.basicConsume(QUEUE_NAME, true, consumer);
    }
}

上述代码示例中,假设 RabbitMQ 队列名称为"car_queue",连接本地 Redis 数据库,每 5 分钟保存一次到 Redis 中。

请根据实际情况修改代码中的 RabbitMQ 和 Redis 连接信息以及相关参数。


原文地址: https://www.cveoy.top/t/topic/p8Kp 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录