From c5e8928a2738dd3f2012b9fe0178e7253b05f151 Mon Sep 17 00:00:00 2001 From: Wonder Date: Sat, 15 Nov 2025 23:55:53 +0800 Subject: [PATCH] =?UTF-8?q?=20=F0=9F=94=84Update:=20=E4=B8=BB=E9=A2=98?= =?UTF-8?q?=E8=AE=A2=E9=98=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/hezhaohui/mq/EmitLogTopic.java | 47 +++++++++++++++++++ .../cn/hezhaohui/mq/ReceiveLogsTopic.java | 46 ++++++++++++++++++ 2 files changed, 93 insertions(+) create mode 100644 src/main/java/cn/hezhaohui/mq/EmitLogTopic.java create mode 100644 src/main/java/cn/hezhaohui/mq/ReceiveLogsTopic.java diff --git a/src/main/java/cn/hezhaohui/mq/EmitLogTopic.java b/src/main/java/cn/hezhaohui/mq/EmitLogTopic.java new file mode 100644 index 0000000..fe83a94 --- /dev/null +++ b/src/main/java/cn/hezhaohui/mq/EmitLogTopic.java @@ -0,0 +1,47 @@ +package cn.hezhaohui.mq; + +import com.rabbitmq.client.Channel; +import com.rabbitmq.client.Connection; +import com.rabbitmq.client.ConnectionFactory; + +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.util.Scanner; +import java.util.concurrent.TimeoutException; + +public class EmitLogTopic { + + private static final String EXCHANGE_NAME = "topic_logs"; + + public static void main(String[] args) { + ConnectionFactory factory = new ConnectionFactory(); + + try (Connection connection = factory.newConnection(); + Channel channel = connection.createChannel(); + Scanner scanner = new Scanner(System.in)) { + + // Init exchange + channel.exchangeDeclare(EXCHANGE_NAME, "topic"); + + // Send message + while (true) { + System.out.println("[#] Facility ?"); + String input_facility = scanner.nextLine(); + System.out.println("[#] Severity ?"); + String input_severity = scanner.nextLine(); + if (input_facility.equals("exit") || input_severity.equals("exit")) { + break; + } + + System.out.println("[#] Message ?"); + String input_message = scanner.nextLine(); + channel.basicPublish(EXCHANGE_NAME, input_facility + '.' + input_severity, null, input_message.getBytes(StandardCharsets.UTF_8)); + System.out.println("πŸ”ΆπŸ”ΆπŸ”Ά"); + } + + // Init queue + } catch (IOException | TimeoutException e) { + System.err.println("=== #Error ==="); + } + } +} diff --git a/src/main/java/cn/hezhaohui/mq/ReceiveLogsTopic.java b/src/main/java/cn/hezhaohui/mq/ReceiveLogsTopic.java new file mode 100644 index 0000000..094cb31 --- /dev/null +++ b/src/main/java/cn/hezhaohui/mq/ReceiveLogsTopic.java @@ -0,0 +1,46 @@ +package cn.hezhaohui.mq; + +import com.rabbitmq.client.Channel; +import com.rabbitmq.client.Connection; +import com.rabbitmq.client.ConnectionFactory; +import com.rabbitmq.client.DeliverCallback; + +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.util.concurrent.TimeoutException; + +public class ReceiveLogsTopic { + + private static final String EXCHANGE_NAME = "topic_logs"; + + public static void main(String[] args) throws Exception { + ConnectionFactory factory = new ConnectionFactory(); + + Connection connection = factory.newConnection(); + Channel channel = connection.createChannel(); + + channel.exchangeDeclare(EXCHANGE_NAME, "topic"); + + // Queue + String queue_name = channel.queueDeclare().getQueue(); + + if (args.length < 1) { + System.err.println("[Null args]"); + } + + for (String bindingKey : args) { + channel.queueBind(queue_name, EXCHANGE_NAME, bindingKey); + } + + System.out.println("πŸŽ‰ Go Go Go"); + + DeliverCallback callback = (consumerTag, delivery) -> { + String output_message = new String(delivery.getBody(), StandardCharsets.UTF_8); + String output_facility_severity = delivery.getEnvelope().getRoutingKey(); + System.out.printf("βœ… [%s] %s\n", output_facility_severity, output_message); + }; + + channel.basicConsume(queue_name, true, callback, consumerTag -> {}); + + } +}