rabbitmq的七种常用模式连接idea使用

本文介绍了如何在IDEA中创建Maven项目,并以Java为编程语言,详细讲解了RabbitMQ的五种常用模式:简单模式、发布订阅模式、路由模式和主题模式的实现与测试过程,包括生产者和消费者的代码示例。通过实例展示了RabbitMQ的消息传递机制和不同模式的特点。
摘要由CSDN通过智能技术生成

rabbitmq的五种常用模式

官方网址
https://www.rabbitmq.com/getstarted.html

在这里插入图片描述创建idea的maven项目

因为五种方式的结构一样,这边我就创建一个项目作为演示

(1)创建一个大的maven项目当作父项目
在这里插入图片描述(2)选择安装路径
在这里插入图片描述(3)在父项目下创建连个子项目 创建步骤和父项目一样
在这里插入图片描述(4)引入依赖
maven项目有一个特性,子类工程可以继承父类工程引得依赖
在这里插入图片描述(1)简单模式
在这里插入图片描述

从图上可以看到只有三个角色:
  p 【product】: 生产者  发生消息的
  红色[queue]: 队列。  存储消息的
  C [consumer]: 消费者  消费消息

生产者(往队列中加入信息)

public class Product {
   
    public static void main(String[] args)throws  Exception {
   
        //创建连接工厂 --配置连接信息
        ConnectionFactory factory=new ConnectionFactory();
        //虚拟机的IP
        factory.setHost("192.168.213.188");
        //创建连接对象Connection
        Connection connection=factory.newConnection();
        //创建信道
        Channel channel = connection.createChannel();

        //创建队列
        /**
         * String queue, 队列的名称
         * boolean durable, 是否该队列持久化 rabbitMQ服务重启后该存放是否存在。
         * boolean exclusive, 是否独占 false
         * boolean autoDelete, 是否自动删除  如果长时间没有发生消息 则自动删除
         * Map<String, Object> arguments 额外参数  先给null
         */
        channel.queueDeclare("ban129_queue",true,false,false,null);
        //发生消息
        /**
         * String exchange: 交换机的名称 如果没有则使用“” 它回自动采用默认
         * String routingKey, 路由key  如果没有交换机的绑定 使用队列的名称
         * BasicProperties props, 消息的一些额外配置 目前先不加 null
         * byte[] body 消息的内容
         */
        String msg="holle!!!!!!!!!!!";
        channel.basicPublish("","ban129_queue",null,msg.getBytes());
    }
}

消费者(消费队列信息)

public class Consumer {
   
    public static void main(String[] args) throws Exception{
   
        //创建连接工厂 --配置连接信息
        ConnectionFactory factory=new ConnectionFactory();
        factory.setHost("192.168.213.188");
        //创建连接对象Connection
        Connection connection=factory.newConnection();
        //创建信道
        Channel channel = connection.createChannel();

        //接受消息
        /**
         * (String queue, 队列的名称
         *  boolean autoAck, 是否自动确认
         *  Consumer callback: 回调方法 当队列中存在信息后 会自动触发回调函数。
         */
        DefaultConsumer callback=new DefaultConsumer(channel){
   
            @Override
            public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
   
                //body 接受的信息
                System.out.println("消息的内容:"+new String(body));
            }
        };
        channel.basicConsume("ban129_queue",true,callback);

    }
}

测试
[1] 先运行生产者
在这里插入图片描述 [2 ]运行消费者
在这里插入图片描述(3)发布订阅模式

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值