From fcaffe8bc1a089aa4d3dcc9e1babeb6700e6bd81 Mon Sep 17 00:00:00 2001 From: Wonder Date: Fri, 14 Nov 2025 22:52:57 +0800 Subject: [PATCH] =?UTF-8?q?=20=F0=9F=94=84Update:=20=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E8=B7=AF=E7=94=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/cn/hezhaohui/mq/Publisher.java | 34 +++++++++++++++++++ src/main/java/cn/hezhaohui/mq/Subscriber.java | 34 +++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 src/main/java/cn/hezhaohui/mq/Publisher.java create mode 100644 src/main/java/cn/hezhaohui/mq/Subscriber.java diff --git a/src/main/java/cn/hezhaohui/mq/Publisher.java b/src/main/java/cn/hezhaohui/mq/Publisher.java new file mode 100644 index 0000000..b2b4c4a --- /dev/null +++ b/src/main/java/cn/hezhaohui/mq/Publisher.java @@ -0,0 +1,34 @@ +package cn.hezhaohui.mq; + +import com.rabbitmq.client.Channel; +import com.rabbitmq.client.Connection; +import com.rabbitmq.client.ConnectionFactory; + +import java.nio.charset.StandardCharsets; +import java.util.Scanner; + +public class Publisher { + + private static final String EXCHANGE_NAME = "direct_logs"; + + public static void main(String[] args) throws Exception{ + ConnectionFactory factory = new ConnectionFactory(); + try (Connection connection = factory.newConnection(); + Channel channel = connection.createChannel(); + Scanner scanner = new Scanner(System.in)) { + channel.exchangeDeclare(EXCHANGE_NAME, "direct"); + + + while (true) { + String msg = scanner.nextLine(); + String type = scanner.nextLine(); + if (msg.equals("exit")) { + break; + } + channel.basicPublish(EXCHANGE_NAME, type, null, msg.getBytes(StandardCharsets.UTF_8)); + System.out.println("[" + type + "] " + msg); + } + } + + } +} diff --git a/src/main/java/cn/hezhaohui/mq/Subscriber.java b/src/main/java/cn/hezhaohui/mq/Subscriber.java new file mode 100644 index 0000000..da2f6d4 --- /dev/null +++ b/src/main/java/cn/hezhaohui/mq/Subscriber.java @@ -0,0 +1,34 @@ +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 Subscriber { + + private static final String EXCHANGE_NAME = "direct_logs"; + + public static void main(String[] args) throws IOException, TimeoutException { + ConnectionFactory factory = new ConnectionFactory(); + Connection connection = factory.newConnection(); + Channel channel = connection.createChannel(); + + channel.exchangeDeclare(EXCHANGE_NAME, "direct"); + String queueName = channel.queueDeclare().getQueue(); + + channel.queueBind(queueName, EXCHANGE_NAME, "warn"); + + DeliverCallback deliverCallback = (consumerTag, delivery) -> { + String message = new String(delivery.getBody(), StandardCharsets.UTF_8); + System.out.println("[Receive] " + + delivery.getEnvelope().getRoutingKey() + ": " + message); + + }; + channel.basicConsume(queueName, true, deliverCallback, consumerTag -> {}); + } +}