Skip to content

Instantly share code, notes, and snippets.

View kirshiyin89's full-sized avatar

Kirshi Yin kirshiyin89

View GitHub Profile
@kirshiyin89
kirshiyin89 / MessageReceiver.java
Created September 1, 2020 21:44
Create RabbitMQ connection
private Connection createConnection() throws TimeoutException, InterruptedException {
ConnectionFactory factory = new ConnectionFactory();
// "guest"/"guest" by default, limited to localhost connections
factory.setUsername("guest");
factory.setPassword("guest");
factory.setVirtualHost("/");
factory.setHost("127.0.0.1");
factory.setPort(5672);
return connectToRabbitMQ(factory);
}
@kirshiyin89
kirshiyin89 / MessageReceiver.java
Created September 1, 2020 21:45
prepare the rabbitMQ
private void prepareRabbitQueue(Channel channel) throws IOException {
int prefetchCount = 1;
channel.basicQos(prefetchCount);
channel.queueDeclare(QUEUE_INPUT, true, false, false, null);
}
@kirshiyin89
kirshiyin89 / MessageReceiver.java
Last active September 6, 2020 19:29
Start consuming messages from RabbitMQ.
public void startWork() throws IOException, TimeoutException, InterruptedException {
Channel channel = createConnection().createChannel();
prepareRabbitQueue(channel);
DeliverCallback deliverCallback = (consumerTag, delivery) -> {
String message = new String(delivery.getBody(), StandardCharsets.UTF_8);
System.out.println(" [x] Received '" + message + "'");
@kirshiyin89
kirshiyin89 / MessageReceiver.java
Created September 1, 2020 21:48
Create Minio connection.
private MinioClient getMinioClient() {
return MinioClient.builder()
.endpoint("localhost", 9001, false)
.credentials("minio", "minio123")
.build();
}
@kirshiyin89
kirshiyin89 / MessageReceiver.java
Created September 1, 2020 21:49
Download the original ebook alice.epub as stream.
private InputStream downloadOriginalBookAsStream(){
InputStream stream;
try {
stream = getMinioClient().getObject(
GetObjectArgs.builder()
.bucket("original-ebook")
.object("alice.epub")
.build());
}catch (InvalidKeyException | NoSuchAlgorithmException | ErrorResponseException | InvalidResponseException | InvalidBucketNameException |
@kirshiyin89
kirshiyin89 / MessageReceiver.java
Last active September 5, 2020 15:14
Handle the file upload.
private void handleFileUpload(String filename) {
MinioClient minioClient = getMinioClient();
try {
ObjectWriteResponse response = createBucketAndUploadFile(minioClient, filename);
if (response != null) {
String url = createURL(minioClient, filename);
System.out.println("Created url: " + url);
}
@kirshiyin89
kirshiyin89 / MessageReceiver.java
Last active September 5, 2020 15:15
Upload the file to Minio.
private ObjectWriteResponse createBucketAndUploadFile(MinioClient minioClient, String filename) throws
IOException, InvalidKeyException, InvalidResponseException, InsufficientDataException, NoSuchAlgorithmException, ServerException, InternalException, XmlParserException, InvalidBucketNameException, ErrorResponseException, RegionConflictException {
if (!minioClient.bucketExists(BucketExistsArgs.builder().bucket("ebookcreator").build())) {
minioClient.makeBucket(MakeBucketArgs.builder().bucket("ebookcreator").build());
}
return minioClient.uploadObject(UploadObjectArgs.builder()
.bucket("ebookcreator")
.object(filename)
.filename(filename)
@kirshiyin89
kirshiyin89 / MessageReceiver.java
Created September 1, 2020 21:51
Create a download Minio URL with expiration date.
private String createURL(MinioClient minioClient, String filename) throws
IOException, InvalidKeyException, InvalidResponseException, InsufficientDataException, InvalidExpiresRangeException, ServerException, InternalException, NoSuchAlgorithmException, XmlParserException, InvalidBucketNameException, ErrorResponseException {
return minioClient.getPresignedObjectUrl(
GetPresignedObjectUrlArgs.builder()
.method(Method.GET)
.bucket("ebookcreator")
.object(filename)
.expiry(2, TimeUnit.HOURS)
.build());
}
@kirshiyin89
kirshiyin89 / EBookHandler.java
Created September 1, 2020 21:52
The EBookHandler class reading and modifying the orignal book.
import nl.siegmann.epublib.domain.Book;
import nl.siegmann.epublib.domain.Resource;
import nl.siegmann.epublib.epub.EpubReader;
import nl.siegmann.epublib.epub.EpubWriter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
@kirshiyin89
kirshiyin89 / docker-compose.yml
Last active September 4, 2020 17:52
Create rabbitmq docker container.
version: '3.7'
services:
avc-rabbit:
image: rabbitmq:3-management
container_name: rabbitmq
ports:
- "15672:15672"
- "5672:5672"