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 -> {}); + } +}