Hello World!
-
依赖
<groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <version>5.16.0</version>
-
消息发送方
package org.example; import com.rabbitmq.client.ConnectionFactory; import com.rabbitmq.client.Connection; import com.rabbitmq.client.Channel; import java.io.IOException; import java.util.concurrent.TimeoutException; /** * 消息发送方 */ public class Send { //队列名称 private static final String QUEUE_NAME = "hello"; /** * 向队列发送消息(使用socket连接) * @param args * @throws Exception */ public static void main(String[] args) throws Exception { ConnectionFactory factory = new ConnectionFactory(); factory.setHost("localhost"); //创建连接 try (Connection connection = factory.newConnection(); //创建通道 Channel channel = connection.createChannel()) { //声明一个队列是幂等的--只有当它不存在时才会被创建。 channel.queueDeclare(QUEUE_NAME, false, false, false, null); String message = "Hello World!"; channel.basicPublish("", QUEUE_NAME, null, message.getBytes()); System.out.println("[x] Sent '" + message + "'"); } catch (Exception e) { e.printStackTrace(); } } }
-
消费者
package org.example; import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; import com.rabbitmq.client.ConnectionFactory; import com.rabbitmq.client.DeliverCallback; /** * 消费者 */ public class Recv { private static final String QUEUE_NAME = "hello"; /** * 接收队列中的消息(使用socket连接) * 不关闭Connection和Channel是因为希望在消费者异步侦听消息到达时,进程保持活动状态 * @param args * @throws Exception */ public static void main(String[] args) throws Exception { ConnectionFactory factory = new ConnectionFactory(); factory.setHost("localhost"); Connection connection = factory.newConnection(); Channel channel = connection.createChannel(); channel.queueDeclare(QUEUE_NAME, false, false, false, null); System.out.println("[*] Waiting for message.To exit press CTRL+C"); //消费者执行消费时的回调函数(函数式接口:只有一个方法的接口) DeliverCallback deliverCallback=(consumerTag,delivery)->{ String message = new String(delivery.getBody(), "UTF-8"); System.out.println("[x] Received '" + message + "'"); }; //消费消息 channel.basicConsume(QUEUE_NAME,true,deliverCallback,consumerTag -> {}); } }