美文网首页RabbitMQ工作生活
Rabbitmq打怪升级之路(七)AMQP协议

Rabbitmq打怪升级之路(七)AMQP协议

作者: 亚武de小文 | 来源:发表于2019-07-05 00:03 被阅读0次

    简书:亚武de小文 【原创:转载请注明出处】

    生产者与消费者模型

    LengToo上学.png

    RabbitMQ 是遵从 AMQP 协议的, 换句话说 , RabbitMQ 就是 AMQP协议的 Erlang 的实现(当然 RabbitMQ 还支持 STOMP2 、 MQTT3 等协议 ) 0 AMQP 的模型架构和 RabbitMQ 的模型架构是一样的,生产者将消息发送给交换器,交换器和队列绑定 。

    AMQP模型图
    AMQP模型图.png
    内部三层
    • Module Layer:
      位于协议最高层,主要定义了一些供客户端调用的命令,客户端可以利用这些命令实现自己的业务逻辑。例如,客户端可以使用 Queue . Declare 命令声明一个队列或者使用 Basic.Consume 订阅消费一个队列中的消息。
    • Session Layer:
      位于中间层,主要负责将客户端的命令发送给服务器,再将服务端的应答返回给客户端,主要为客户端与服务器之间的通信提供可靠性同步机制和错误处理。
    • Transport Layer:
      位于最底层,主要传输二进制数据流 ,提供帧的处理、信道复用、错误检测和数据表示等。
    amqp生产者代码
    ConnectionFactory factory = new ConnectionFactory();
    factory.setHost("127.0.0.1");
    factory.setUsername("guest");
    factory.setPassword("guest");
    Connection connection = factory.newConnection();
    Channel channel = connection.createChannel();
    String message = "Hello,亚武de小文!";
    channel.basicPublish("", QUEUE_NAME, null, msg);
    
    amqp消费者代码
    ConnectionFactory factory = new ConnectionFactory();
    Connection connection = factory.newConnection();
    Channel channel = connection.createChannel();
    Consumer consumer = new DefaultConsumer(channel) {......}
    channel.basicConsume(QUEUE_NAME, true, consumer);
    
    常用命令
    名称 是否包含内容体 对应客户端中方法 简要描述
    Connection.Start factory.newConnection 建立连接相关
    Connection.Close connection.close 关闭连接
    Channel.Open connection.openChannel 开启信道
    Channel.Close channel.close 关闭信道
    Exchange.Declare channel.exchangeDeclare 声明交换器
    Exchange.Declare channel.exchangeDelete 删除交换器
    Queue.Declare channel.queueDeclare 声明队列
    Queue.Bind channel.queueBind 队列与交换机绑定
    Queue.purge channel.queuePurge 清除队列中的内容
    Queue.Delete channel.queueDelete 删除队列
    Queue.Unbind channel.queueUnbind 队列与交换机解绑

    相关文章

      网友评论

        本文标题:Rabbitmq打怪升级之路(七)AMQP协议

        本文链接:https://www.haomeiwen.com/subject/ycmdhctx.html