RabbitMQ消息模型之Sample

简介: RabbitMQ消息模型之Sample

Hello World

Hello World是官网给出的第一个模型,使用的交换机类型是直连direct,也是默认的交换机类型。

在上图的模型中,有以下概念:

  • P:生产者,也就是要发送消息的程序
  • C:消费者:消息的接受者,会一直等待消息到来。
  • Queue:消息队列,图中红色部分。类似一个邮箱,可以缓存消息;生产者向其中投递消息,消费者从其中取出消息。

此模型中只有一个生产者、一个队列、一个消费者。

这种模式适合于消息任务不是很密集,并且处理任务不算太过耗时的场景。消费者消费的速度赶得上生产者生产的速度。

创建生产者

public class MyProducer {
    @Test
    public void test() throws Exception {
        // 队列名称
        String queue = "xw_queue";
        String message = "Hello World -> ";
        // 创建工厂
        ConnectionFactory factory = new ConnectionFactory();
        factory.setVirtualHost("/");
        factory.setHost("xuewei.world");
        factory.setUsername("xuewei");
        factory.setPassword("123456");
        factory.setPort(5672);
        // 创建连接和通道
        Connection connection = factory.newConnection();
        Channel channel = connection.createChannel();
        for (int i = 0; i < 10; i++) {
            // 发布消息
            channel.basicPublish("xw_exchange", queue, null, (message + i).getBytes());
        }
    }
}

创建消费者

public class MyConsumer {
    public static void main(String[] args) throws Exception {
        // 队列名称
        String queue = "xw_queue";
        // 创建工厂
        ConnectionFactory factory = new ConnectionFactory();
        factory.setVirtualHost("/");
        factory.setHost("xuewei.world");
        factory.setUsername("xuewei");
        factory.setPassword("123456");
        factory.setPort(5672);
        // 创建连接和通道
        Connection connection = factory.newConnection();
        Channel channel = connection.createChannel();
        channel.queueDeclare(queue, true, false, false, null);
        channel.queueBind("", "xw_exchange", queue);
        channel.basicConsume(queue, true, new DefaultConsumer(channel) {
            @Override
            public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
                System.out.println("接收到消息: " + new String(body));
                // TODO 业务处理
            }
        });
    }
}


相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
2月前
|
消息中间件
RabbitMQ消息模型之Work Queues
RabbitMQ消息模型之Work Queues
24 1
RabbitMQ消息模型之Work Queues
|
2月前
|
消息中间件
RabbitMQ消息模型之Routing-Topic
RabbitMQ消息模型之Routing-Topic
25 0
|
2月前
|
消息中间件
RabbitMQ消息模型之Routing-Direct
RabbitMQ消息模型之Routing-Direct
26 1
|
2月前
|
消息中间件
RabbitMQ消息模型之发布订阅Publish-Subscribe
RabbitMQ消息模型之发布订阅Publish-Subscribe
28 0
RabbitMQ消息模型之发布订阅Publish-Subscribe
|
12月前
|
消息中间件 存储 Java
【RabbitMQ四】——RabbitMQ发布订阅模式(Publish/Subscribe)
【RabbitMQ四】——RabbitMQ发布订阅模式(Publish/Subscribe)
237 1
|
2月前
|
消息中间件 存储
RabbitMQ插件详解:rabbitmq_recent_history_exchange【RabbitMQ 七】
RabbitMQ插件详解:rabbitmq_recent_history_exchange【RabbitMQ 七】
80 0
|
12月前
|
消息中间件
【RabbitMQ七】——RabbitMQ发布确认模式(Publisher Confirms)
【RabbitMQ七】——RabbitMQ发布确认模式(Publisher Confirms)
156 0
|
12月前
|
消息中间件 应用服务中间件 nginx
【RabbitMQ六】——RabbitMQ主题模式(Topic)
【RabbitMQ六】——RabbitMQ主题模式(Topic)
217 1
|
消息中间件 存储 负载均衡
理解RabbitMQ中的AMQP-0-9-1模型
之前有个打算在学习RabbitMQ之前,把AMQP详细阅读一次,挑出里面的重点内容。后来找了下RabbitMQ的官方文档,发现了有一篇文档专门介绍了RabbitMQ中实现的AMQP模型部分,于是直接基于此文档和个人理解写下这篇文章。
161 0
理解RabbitMQ中的AMQP-0-9-1模型
|
消息中间件 存储 JSON
RabbitMQ消息模型之FanoutExchange消息模型实战
RabbitMQ消息模型之FanoutExchange消息模型实战
RabbitMQ消息模型之FanoutExchange消息模型实战

热门文章

最新文章