public static SentMessageTrace createUndeliveredMessage(String qualifiedTopicName, String subscription, String message, String cause, Long loggingTime, Integer partition, Long offset, String cluster) { return new SentMessageTrace( null, null, loggingTime, subscription, qualifiedTopicName, SentMessageTraceStatus.DISCARDED, cause, message, partition, offset, cluster ); }
public static SentMessageTrace createUndeliveredMessage(Subscription subscription, String message, Throwable cause, Long loggingTime, Integer partition, Long offset, String cluster) { return createUndeliveredMessage(subscription.getQualifiedTopicName(), subscription.getName(), message, cause.getMessage(), loggingTime, partition, offset, cluster); }
private void log(SentMessageTrace messageTrace) { try { String undeliveredPath = paths.subscriptionPath(messageTrace.getTopicName(), messageTrace.getSubscription(), NODE_NAME); BackgroundPathAndBytesable<?> builder = exists(undeliveredPath) ? curator.setData() : curator.create(); builder.forPath(undeliveredPath, mapper.writeValueAsBytes(messageTrace)); } catch (Exception exception) { LOGGER.warn( format("Could not log undelivered message for topic: %s and subscription: %s", messageTrace.getQualifiedTopicName(), messageTrace.getSubscription() ), exception ); } }
@Override public void add(SentMessageTrace message) { lastUndeliveredMessages.put(new SubscriptionName(message.getSubscription(), message.getTopicName()), message); }
@Test public void shouldAddUndeliveredMessageToLog() throws Exception { // given when log.add(createUndeliveredMessage(SUBSCRIPTION, "message")); log.persist(); // then SentMessageTrace lastMessage = log.last(TOPIC, "subscription").get(); assertThat(lastMessage.getMessage()).isEqualTo("message"); }
@Test public void shouldReturnLatestUndeliveredMessage() throws Exception { // given log.add(createUndeliveredMessage(SUBSCRIPTION, "old message")); log.add(createUndeliveredMessage(SUBSCRIPTION, "new message")); log.persist(); // when SentMessageTrace lastMessage = log.last(TOPIC, "subscription").get(); // then assertThat(lastMessage.getMessage()).isEqualTo("new message"); }
public static SentMessageTrace createUndeliveredMessage(TopicName topicName, String subscription, String message, Throwable cause, Long loggingTime, Integer partition, Long offset, String cluster) { return new SentMessageTrace( null, null, loggingTime, subscription, topicName.qualifiedName(), SentMessageTraceStatus.DISCARDED, cause.getMessage(), message, partition, offset, cluster ); }
private SentMessageTrace createUndeliveredMessage(String subscription, String message) { return SentMessageTrace.createUndeliveredMessage(TOPIC, subscription, message, new IllegalArgumentException(), 1L, 1, 1L, "cluster"); } }
private SentMessageTrace convertToSentMessage(DBObject rawObject) { BasicDBObject object = (BasicDBObject) rawObject; return new SentMessageTrace( object.getString(MESSAGE_ID), object.getString(BATCH_ID), object.getLong(TIMESTAMP), object.getString(SUBSCRIPTION), object.getString(TOPIC_NAME), SentMessageTraceStatus.valueOf(object.getString(STATUS)), object.getString(REASON), null, object.getInt(PARTITION, -1), object.getLong(OFFSET, -1), object.getString(CLUSTER, "") ); }
private void addToMessageLog(Message message, Subscription subscription, MessageSendingResult result) { result.getLogInfo().forEach(logInfo -> undeliveredMessageLog.add(createUndeliveredMessage(subscription, new String(message.getData()), logInfo.getFailure(), clock.millis(), message.getPartition(), message.getOffset(), cluster))); }
private SentMessageTrace sentMessageTrace(MessageMetadata messageMetadata, long timestamp, SentMessageTraceStatus status) { return new SentMessageTrace(messageMetadata.getMessageId(), messageMetadata.getBatchId(), timestamp, messageMetadata.getSubscription(), messageMetadata.getTopic(), status, REASON_MESSAGE, null, messageMetadata.getPartition(), messageMetadata.getOffset(), CLUSTER_NAME); }
private void addToMessageLog(Message message, Subscription subscription, MessageSendingResult result) { result.getLogInfo().forEach(logInfo -> undeliveredMessageLog.add(createUndeliveredMessage(subscription, new String(message.getData()), logInfo.getFailure(), clock.millis(), message.getPartition(), message.getOffset(), cluster))); }
private SentMessageTrace sentMessageTrace(MessageMetadata messageMetadata, long timestamp, SentMessageTraceStatus status) { return new SentMessageTrace(messageMetadata.getMessageId(), messageMetadata.getBatchId(), timestamp, messageMetadata.getSubscription(), messageMetadata.getTopic(), status, REASON_MESSAGE, null, messageMetadata.getPartition(), messageMetadata.getOffset(), CLUSTER_NAME); }
private SentMessageTrace convert(DBObject rawObject) { BasicDBObject object = (BasicDBObject) rawObject; return new SentMessageTrace( object.getString(MESSAGE_ID), object.getString(BATCH_ID), object.getLong(TIMESTAMP), object.getString(LogSchemaAware.SUBSCRIPTION), object.getString(TOPIC_NAME), SentMessageTraceStatus.valueOf(object.getString(STATUS)), object.getString(REASON), null, object.getInt(PARTITION, -1), object.getLong(OFFSET, -1), object.getString(CLUSTER, "") ); } }