0
나는 RabbitMQ 3.7과 플러그인 rabbitmq_message_timestamp을 사용하여 메시지가 RabbitMQ에 처음 들어가면 (모니터링 목적으로) 타임 스탬프를 추가합니다.토끼 head_message_timestamp을 Java LocalDateTime으로 변환하는 방법?
이 timestamp에 액세스 할 수 있습니다. RabbitMQ Management HTTP API을 통해
너무 오래 기다리는 메시지를 찾으려면 어떻게 Java LocalDateTime으로 변환 할 수 있습니까? 사용
편집
샘플 감시 코드 @ 니콜라 - natea 팁 :
타임 스탬프은 초 단위로 제공 (또는 MS : https://github.com/rabbitmq/rabbitmq-message-timestamp/issues/16를)되어public class QueueState {
private static final int ALARMING_PROCESSING_TIME_IN_SECONDS = 5 * 60;
private static final int ALARMING_MESSAGE_TRAFFIC_JAM_LENGTH = 20;
private final QueueId qid;
private int messagesCount = 0;
private Long headMessageTimestamp = null;
@JsonCreator
public QueueState(
@JsonProperty("vhost") String vhost,
@JsonProperty("name") String name,
@JsonProperty("messages") Integer messagesCount,
@JsonProperty("head_message_timestamp") Long headMessageTimestamp
) {
this.qid = new QueueId(vhost, name);
this.messagesCount = messagesCount == null ? 0 : messagesCount;
this.headMessageTimestamp = headMessageTimestamp;
}
public boolean isAlarmingState() {
return (messagesCount == -1)
|| (messagesCount > ALARMING_MESSAGE_TRAFFIC_JAM_LENGTH)
|| isHeadMessageWaitingTooLong();
}
private boolean isHeadMessageWaitingTooLong() {
if ((messagesCount > 0) && (headMessageTimestamp != null)) {
long nowTs = ZonedDateTime.now(ZoneOffset.UTC).toEpochSecond();
long thresholdTs = headMessageTimestamp + ALARMING_PROCESSING_TIME_IN_SECONDS;
return nowTs > thresholdTs;
}
return false;
}
}
덕분에, 추가 링크 : https://github.com/rabbitmq/rabbitmq-message-timestamp/blob/master/src/rabbit_timestamp_interceptor.erl 에 http : // 얼랑 .org/doc/man/os.html # system_time-0 – wildloop
한 번 더 문제가 있습니다. rabbitmq를 다시 시작한 후'head_message_timestamp' (플러그인 별)가 손실됩니다. 당신도 똑같은 행동을합니까? – wildloop