rabbitmq基础及进阶

rabbitmq基础及进阶,第1张

rabbitmq基础及进阶 安装
  1. 官网地址
    rabbitmq下载官网

  2. 安装

    rpm -ivh erlang-21.3-1.el7.x86_64.rpm # 安装erlang
    yum install socat -y # 安装依赖
    rpm -ivh rabbitmq-server-3.8.8-1.el7.noarch.rpm # 安装mq

  3. 常用命令

    添加开机启动 RabbitMQ 服务
    chkconfig rabbitmq-server on

    /sbin/service rabbitmq-server start # 启动
    /sbin/service rabbitmq-server status # 查看状态
    /sbin/service rabbitmq-server status # 停止服务
    rabbitmq-plugins enable rabbitmq_management # 开启 web 管理插件

    用默认账号密码(guest)访问地址:http:/ channel.queueDeclare(QUEUE_NAME,false,false,false,null); //发送消息 String message = "hello world"; channel.basicPublish("",QUEUE_NAME,null,message.getBytes()); } } ps:记得开放端口 5672

  4. 消费者
    public class Consumer {
        public static final String QUEUE_NAME="hello";
        //接收消息
        public static void main(String[] args) throws IOException, TimeoutException {
            ConnectionFactory factory = new ConnectionFactory();
             factory.setHost("192.168.1.1");
            //用户名
            factory.setUsername("admin");
            //密码
            factory.setPassword("admin");
            factory.setPort(5672);
            //factory.setVirtualHost("hbsi"); // 虚拟机
            //连接
            Connection connection = factory.newConnection();
    
            //通道
            Channel channel = connection.createChannel();
            
            com.rabbitmq.client.Consumer consumer = new DefaultConsumer(channel){
                
                @Override
                public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
                    System.out.println("consumerTag:"+consumerTag);
                    System.out.println("Exchange:"+envelope.getExchange());
                    System.out.println("RoutingKey:"+envelope.getRoutingKey());
                    System.out.println("DeliveryTag:"+envelope.getDeliveryTag());
                    System.out.println("properties:"+properties);
                    System.out.println("body:"+new String(body));
                }
            };
            channel.basicConsume(QUEUE_NAME,true,consumer);
        }
    }
    
    
订阅模式

  • P:生产者,不再发送到队列中,而是发给 X 交换机
  • C:消费者,消息的接收者,会一直等待消息到来
  • Queue:消息队列,接收消息、缓存消息
  • Exchange:交换机(X)一方面,接收生产者发送的消息。另一方面,知道如何处理消息,例如递交给某个队列、递交给所有队列,或是将消息丢弃。Exchange三种类型:
    • Fanout:广 播,将消息交给所有绑定到交换机的队列
    • Direct:定向,把消息交给符合指定 routing key 的队列
    • Topic:通配符,把消息交给符合 routing pattern(路由模式)的队列
  • Exchange(交换机)只负责转发消息,不具备存储消息的能力,因此如果没有任何队列与 Exchange 绑定,或者没有符合路由规则的队列,那么消息会丢失

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5679321.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存