RabbitMQ学习记录

安装教程https://blog.csdn.net/weixin_42673046/article/details/118442323

启动等命令
进入到rabbitmq文件目录下sbin文件夹下面执行命令
后台启动: ./rabbitmq-server -detached
查看状态:./rabbitmqctl status
应用和节点都将被关闭:./rabbitmqctl stop
应用启动:./rabbitmqctl start_app
应用关闭节点不关:./rabbitmqctl stop_app
开启管理插件web页面:./rabbitmq-plugins enable rabbitmq_management
查看插件列表状态:./rabbitmq-plugins list

springboot整合rabbitMQ的demo项目放在本地盘中

一 ,rabbitmq中消息的几种模型

第一种:直连
生产者(P) —> 队列 —> 消费者(C)
生产者连接队列发布消息方法

  public static void clientRb() throws IOException, TimeoutException {
   
  		//rabbitMQ连接步骤
        ConnectionFactory connectionFactory = new ConnectionFactory();
        //参数设置
        connectionFactory.setHost("127.0.0.1");
        connectionFactory.setPort(5672);
        //要连接的虚拟主机
        connectionFactory.setVirtualHost("/dmo");
        connectionFactory.setUsername("admin");
        connectionFactory.setPassword("admin");

        //创建连接对象
        Connection connection = connectionFactory.newConnection();

        //获取中间通道
        //需要通过中间通道将消息发送到队列
        Channel channel = connection.createChannel();
        //设置消息连接信息 给通道绑定队列
        //参数意思:1.队列名称(主机中没有会自动创建)  
        //2.是否开启持久化(保存队列信息) 此处只是队列持久化,消息不会持久化保存 不开启每次重启rabbitmq会删掉之前的队列
        //3.是否独占队列(只允许当前客户端向队列发送消息)
        //4.是否在消息消费完成后自动删除当前队列(消费者消费完并且断开连接才会删除)      
        //5.附加参数
        channel.queueDeclare("helloRb",false,false,false,null);

        //直连模式中其实不绑定队列也可以直接发布消息,因为下面发布消息的方法中参数路由key对应着队列名称
        //直连模式下消息直接发布到AMQP default默认交换机中,默认交换机与所有队列建立隐含绑定关系,路由的key就是队列名
        //所以在发布方法中直接写上队列名称也可以直接发送到队列中

        //发布消息
        //参数意思:1.交换机名称  2.路由key:因为默认交换机绑定了所有队列,在直连模式中可以直接送到队列中  3.发布消息的额外设置  4.发布消息集体内容
        //MessageProperties.PERSISTENT_TEXT_PLAIN  --开启消息持久化
        channel.basicPublish("", "helloRb", MessageProperties.PERSISTENT_TEXT_PLAIN, "hello rabbitMQ3".getBytes());



        channel.close();
        connection.close();
    }

消费者方法

   //在main函数中运行,因为方法调用时运行结束会直接杀死线程
    public static void main(String[] args) throws IOException, TimeoutException {
   
        //rabbitMQ连接步骤
        //前面的连接步骤 都一样
        //参数设置
        RabbitMQConnectionUtil rabbitMQConnectionUtil = new RabbitMQConnectionUtil();

        Connection connection = rabbitMQConnectionUtil.getConnection();
        Channel channel = connection.createChannel();

        //这里的参数要与队列一致 否则会报错
        //例如生产者新建的是一个消息开启持久化的队列,消费者这里绑定也要设置成持久化才能接收,否则报错
        channel.queueDeclare("helloRb", true, false, false, null);

        //获取/消费消息
        //参数意思: 1.消息队列名称 
  		//2.是否自动确认(此处为true)  只有确认了的消息才认为被消费完成了
        //3.消费回调可以在其中获取到消息内容等操作
        channel.basicConsume("helloRb", true, new DefaultConsumer(channel){
   
            @Override
            public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
   
                //super.handleDelivery(consumerTag, envelope, properties, body);
                System.out.println
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值