public void sendDelay(@Nonnull String topic, String key, Integer partition, @Nonnull Event event, long delayMs,
@Nonnull DelayQueueStrategy strategy) {
try {
int level = strategy.getTargetDelayLevel(delayMs);
String delayTopic = String.format("delay_topic_level_%d", level);
event.setTimeStamp(System.currentTimeMillis());
long expirationTime = event.getTimeStamp() + FIXED_DELAY_LEVELS.get(level - 1);
DelayEvent delayEvent = new DelayEvent(topic,key,partition,event,level,expirationTime,null);
log.info("延迟等级level={}, 到期时间expirationTime={}", level, expirationTime);
sendGenerically(delayTopic,delayEvent);
} catch (Exception e) {
log.error("延迟消息发送失败", e);
}
}
public void sendDelay(@Nonnull String topic, Integer partition, @Nonnull Event event, long delayMs,
@Nonnull DelayQueueStrategy strategy) {
sendDelay(topic,null,partition,event,delayMs,strategy);
}
public void sendDelay(@Nonnull String topic, String key, @Nonnull Event event, long delayMs,
@Nonnull DelayQueueStrategy strategy) {
sendDelay(topic,key,null,event,delayMs,strategy);
}
public void sendDelay(@Nonnull String topic, @Nonnull Event event, long delayMs,
@Nonnull DelayQueueStrategy strategy) {
sendDelay(topic,null,null,event,delayMs,strategy);
}
public<T> void sendDelayGenerically(@Nonnull String topic, String key, Integer partition, @Nonnull T event, long delayMs,
@Nonnull DelayQueueStrategy strategy) {
try {
if (event instanceof Event) {
Event thisEvent = (Event) event;
int level = strategy.getTargetDelayLevel(delayMs);
String delayTopic = String.format("delay_topic_level_%d", level);
thisEvent.setTimeStamp(System.currentTimeMillis());
long expirationTime = thisEvent.getTimeStamp() + FIXED_DELAY_LEVELS.get(level - 1);
DelayEvent delayEvent = new DelayEvent(topic, key, partition, event, level, expirationTime, SerializeEnum.JSON);
log.info("延迟等级level={}, 到期时间expirationTime={}", level, expirationTime);
sendGenerically(delayTopic, delayEvent);
} else if (event instanceof EventV2) {
EventV2 thisEvent = (EventV2) event;
int level = strategy.getTargetDelayLevel(delayMs);
String delayTopic = String.format("delay_topic_level_%d", level);
thisEvent.setTimeStamp(System.currentTimeMillis());
long expirationTime = thisEvent.getTimeStamp() + FIXED_DELAY_LEVELS.get(level - 1);
DelayEvent delayEvent = new DelayEvent(topic, key, partition, event, level, expirationTime, SerializeEnum.KRYO);
log.info("延迟等级level={}, 到期时间expirationTime={}", level, expirationTime);
sendGenerically(delayTopic, delayEvent);
}else{
int level = strategy.getTargetDelayLevel(delayMs);
String delayTopic = String.format("delay_topic_level_%d", level);
long expirationTime = System.currentTimeMillis() + FIXED_DELAY_LEVELS.get(level - 1);
DelayEvent delayEvent = new DelayEvent(topic, key, partition, event, level, expirationTime, SerializeEnum.JSON);
log.info("延迟等级level={}, 到期时间expirationTime={}", level, expirationTime);
sendGenerically(delayTopic, delayEvent);
}
} catch (Exception e) {
log.error("延迟消息发送失败", e);
}
}
public void sendDelayGenerically(@Nonnull String topic, Integer partition, @Nonnull Event event, long delayMs,
@Nonnull DelayQueueStrategy strategy) {
sendDelayGenerically(topic,null,partition,event,delayMs,strategy);
}
public void sendDelayGenerically(@Nonnull String topic, String key, @Nonnull Event event, long delayMs,
@Nonnull DelayQueueStrategy strategy) {
sendDelayGenerically(topic,key,null,event,delayMs,strategy);
}
public void sendDelayGenerically(@Nonnull String topic, @Nonnull Event event, long delayMs,
@Nonnull DelayQueueStrategy strategy) {
sendDelayGenerically(topic,null,null,event,delayMs,strategy);
}请为这些方法写javadoc注释
最新发布