package io.fathom.cloud.compute.mq.filesystem; import io.fathom.cloud.blobs.TempFile; import io.fathom.cloud.mq.MessageQueueWriter; import java.io.File; import java.io.IOException; import java.util.UUID; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.fathomdb.io.IoUtils; import com.google.common.io.Files; public class FilesystemMessageQueueWriter implements MessageQueueWriter { private static final Logger log = LoggerFactory.getLogger(FilesystemMessageQueueWriter.class); private final File queueDir; private final File tmpDir; public FilesystemMessageQueueWriter(File queueDir) throws IOException { this.queueDir = queueDir; this.tmpDir = new File(queueDir, "_tmp"); IoUtils.mkdirs(tmpDir); } @Override public void enqueue(byte[] data) throws IOException { String name = System.currentTimeMillis() + "_" + UUID.randomUUID().toString(); try (TempFile tempFile = new TempFile(new File(tmpDir, name))) { Files.write(data, tempFile.getFile()); tempFile.renameTo(new File(queueDir, name)); } } }