有没有用过rocketMq的定时发布问题,我看到好像只有延时这一个操作并且时间最长两个小时的 可是这样不满足需求啊
不行你就用定时任务呗,根据设置的定时时间去跑就好了。
mq做定时发布其实并不算好,主要是消息功能
推荐你用定时任务,如果是要求比较高的,推荐你看下xxljob这个框架
【以下回答由 GPT 生成】
答案:
RocketMQ的确支持延时操作,但是默认最长只能延时2小时。如果需要实现更长时间的定时发布,可以通过自定义消息的消费时间以及定时任务来实现。下面是一种可能的解决方案:
DefaultMQProducer producer = new DefaultMQProducer("producerGroup");
producer.setNamesrvAddr("namesrvAddress");
producer.start();
Message msg = new Message("topic", "tag", "body".getBytes());
// 设置消息的延时级别,这里以30分钟为例,延时级别为4
msg.setDelayTimeLevel(4);
SendResult sendResult = producer.send(msg);
System.out.println(sendResult);
producer.shutdown();
public class RocketMQSchedulerJob implements Job {
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
// 消费RocketMQ的消息
// ...
}
}
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("consumerGroup");
consumer.setNamesrvAddr("namesrvAddress");
consumer.subscribe("topic", "*");
consumer.registerMessageListener(new MessageListenerConcurrently() {
@Override
public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext context) {
// 处理RocketMQ的消息
// ...
return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
}
});
consumer.start();
使用上述方案,可以通过定时任务来消费RocketMQ的消息,从而实现更长时间的定时发布。注意在设置消息的延时级别时,需要选择合适的级别来满足实际需求。
【相关推荐】