RabbitMQ使用实例

下面是一个使用Java实现的RabbitMQ示例代码,用于发送和接收消息:

首先,您需要安装RabbitMQ,并确保服务正在运行。

接下来,您可以使用以下示例代码来发送和接收消息:

Sender.java文件:

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

public class Sender {
    private final static String QUEUE_NAME = "hello";

    public static void main(String[] args) {
        try {
            // 创建连接工厂
            ConnectionFactory factory = new ConnectionFactory();
            factory.setHost("localhost");

            // 创建连接
            Connection connection = factory.newConnection();

            // 创建通道
            Channel channel = connection.createChannel();

            // 声明队列
            channel.queueDeclare(QUEUE_NAME, false, false, false, null);

            // 发送消息
            String message = "Hello, RabbitMQ!";
            channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
            System.out.println("Sent message: " + message);

            // 关闭通道和连接
            channel.close();
            connection.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Receiver.java文件:

import com.rabbitmq.client.*;

public class Receiver {
    private final static String QUEUE_NAME = "hello";

    public static void main(String[] args) {
        try {
            // 创建连接工厂
            ConnectionFactory factory = new ConnectionFactory();
            factory.setHost("localhost");

            // 创建连接
            Connection connection = factory.newConnection();

            // 创建通道
            Channel channel = connection.createChannel();

            // 声明队列
            channel.queueDeclare(QUEUE_NAME, false, false, false, null);

            // 创建消费者
            Consumer consumer = new DefaultConsumer(channel) {
                @Override
                public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) {
                    String message = new String(body);
                    System.out.println("Received message: " + message);
                }
            };

            // 开始消费消息
            channel.basicConsume(QUEUE_NAME, true, consumer);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

在上述示例代码中,Sender类用于发送消息,Receiver类用于接收消息。

在Sender类中,我们创建了一个连接工厂,设置了RabbitMQ服务器的主机地址。然后,我们创建了一个连接和通道,并声明了一个队列。使用basicPublish方法向队列发送消息。最后,关闭通道和连接。

在Receiver类中,我们创建了一个连接工厂,设置了RabbitMQ服务器的主机地址。然后,我们创建了一个连接和通道,并声明了一个队列。创建了一个消费者,覆盖了handleDelivery方法来处理接收到的消息。使用basicConsume方法开始消费消息。

请确保您已正确配置RabbitMQ服务器和相关依赖项,并根据需要更改服务器地址和队列名称。运行Sender和Receiver代码后,您将看到消息从发送者被发送到接收者。



当然!这里是另一个使用Java实现的RabbitMQ示例代码,用于发送和接收带有确认机制的消息:

首先,您需要安装RabbitMQ,并确保服务正在运行。

接下来,您可以使用以下示例代码来发送和接收带有确认机制的消息:

Sender.java文件:

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

public class Sender {
    private final static String QUEUE_NAME = "hello";

    public static void main(String[] args) {
        try {
            // 创建连接工厂
            ConnectionFactory factory = new ConnectionFactory();
            factory.setHost("localhost");

            // 创建连接
            Connection connection = factory.newConnection();

            // 创建通道
            Channel channel = connection.createChannel();

            // 声明队列
            channel.queueDeclare(QUEUE_NAME, false, false, false, null);

            // 开启确认模式
            channel.confirmSelect();

            // 发送消息
            String message = "Hello, RabbitMQ!";
            channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
            System.out.println("Sent message: " + message);

            // 等待消息确认
            if (channel.waitForConfirms()) {
                System.out.println("Message confirmed!");
            } else {
                System.out.println("Message not confirmed!");
            }

            // 关闭通道和连接
            channel.close();
            connection.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Receiver.java文件:

import com.rabbitmq.client.*;

public class Receiver {
    private final static String QUEUE_NAME = "hello";

    public static void main(String[] args) {
        try {
            // 创建连接工厂
            ConnectionFactory factory = new ConnectionFactory();
            factory.setHost("localhost");

            // 创建连接
            Connection connection = factory.newConnection();

            // 创建通道
            Channel channel = connection.createChannel();

            // 声明队列
            channel.queueDeclare(QUEUE_NAME, false, false, false, null);

            // 创建消费者
            Consumer consumer = new DefaultConsumer(channel) {
                @Override
                public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) {
                    String message = new String(body);
                    System.out.println("Received message: " + message);
                    try {
                        // 手动确认消息
                        channel.basicAck(envelope.getDeliveryTag(), false);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            };

            // 关闭自动消息确认
            channel.basicConsume(QUEUE_NAME, false, consumer);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

在上述示例代码中,Sender类用于发送带有确认机制的消息,Receiver类用于接收消息并手动确认。

在Sender类中,我们创建了一个连接工厂,设置了RabbitMQ服务器的主机地址。然后,我们创建了一个连接和通道,并声明了一个队列。通过调用confirmSelect方法开启确认模式。使用basicPublish方法向队列发送消息。在发送完消息后,通过调用waitForConfirms方法等待消息确认结果,并根据返回结果打印相应的消息确认信息。最后,关闭通道和连接。

在Receiver类中,我们创建了一个连接工厂,设置了Rabbit

MQ服务器的主机地址。然后,我们创建了一个连接和通道,并声明了一个队列。创建了一个消费者,覆盖了handleDelivery方法来处理接收到的消息,并手动确认消息。通过调用basicConsume方法关闭自动消息确认。

请确保您已正确配置RabbitMQ服务器和相关依赖项,并根据需要更改服务器地址和队列名称。运行Sender和Receiver代码后,您将看到消息从发送者被发送到接收者,并且接收者手动确认了消息的处理。



当然!这是另一个使用Java实现的RabbitMQ示例代码,用于发送和接收主题消息:

首先,您需要安装RabbitMQ,并确保服务正在运行。

接下来,您可以使用以下示例代码来发送和接收主题消息:

Sender.java文件:

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

public class Sender {
    private final static String EXCHANGE_NAME = "topic_exchange";

    public static void main(String[] args) {
        try {
            // 创建连接工厂
            ConnectionFactory factory = new ConnectionFactory();
            factory.setHost("localhost");

            // 创建连接
            Connection connection = factory.newConnection();

            // 创建通道
            Channel channel = connection.createChannel();

            // 声明交换机
            channel.exchangeDeclare(EXCHANGE_NAME, "topic");

            // 发送消息
            String message = "Hello, RabbitMQ!";
            String routingKey = "topic.key";
            channel.basicPublish(EXCHANGE_NAME, routingKey, null, message.getBytes());
            System.out.println("Sent message: " + message);

            // 关闭通道和连接
            channel.close();
            connection.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Receiver.java文件:

import com.rabbitmq.client.*;

public class Receiver {
    private final static String EXCHANGE_NAME = "topic_exchange";

    public static void main(String[] args) {
        try {
            // 创建连接工厂
            ConnectionFactory factory = new ConnectionFactory();
            factory.setHost("localhost");

            // 创建连接
            Connection connection = factory.newConnection();

            // 创建通道
            Channel channel = connection.createChannel();

            // 声明交换机
            channel.exchangeDeclare(EXCHANGE_NAME, "topic");

            // 声明一个临时队列
            String queueName = channel.queueDeclare().getQueue();

            // 绑定队列到交换机,并指定routingKey
            String routingKey = "topic.*";
            channel.queueBind(queueName, EXCHANGE_NAME, routingKey);

            // 创建消费者
            Consumer consumer = new DefaultConsumer(channel) {
                @Override
                public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) {
                    String message = new String(body);
                    System.out.println("Received message: " + message);
                }
            };

            // 开始消费消息
            channel.basicConsume(queueName, true, consumer);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

在上述示例代码中,Sender类用于发送主题消息,Receiver类用于接收消息。

在Sender类中,我们创建了一个连接工厂,设置了RabbitMQ服务器的主机地址。然后,我们创建了一个连接和通道,并声明了一个主题交换机。使用basicPublish方法向交换机发送消息,并指定routingKey。最后,关闭通道和连接。

在Receiver类中,我们创建了一个连接工厂,设置了RabbitMQ服务器的主机地址。然后,我们创建了一个连接和通道,并声明了一个主题交换机。创建了一个临时队列,并将其绑定到交换机上,并指定了相应的routingKey。创建了一个消费者,覆盖了handleDelivery方法来处理接收到

的消息。使用basicConsume方法开始消费消息。

请确保您已正确配置RabbitMQ服务器和相关依赖项,并根据需要更改服务器地址、交换机名称和routingKey。运行Sender和Receiver代码后,您将看到消息从发送者被发送到接收者,并根据routingKey的匹配规则被接收。

posted @ 2023-05-30 15:13  田野与天  阅读(100)  评论(0编辑  收藏  举报