zoukankan      html  css  js  c++  java
  • RabbitMQ十:重要方法简述(参数)

    主要方法

    前言

    经过前面的学习,RabbitMQ 已经拙见有一定认识和了解,今天主要针对我们在前面学习方法进行一次小总结,本篇文章也想在开头写的,但是后来考虑,如果我都把方法都一一列举,我想大家都没很不懂,很多疑问。问这方法有什么用,怎么在实例中用,等一些问题出现在脑海里,学习起来很吃力,看不懂,不理解,经过每个情景进入抒写每个对应代码demo,然后把所有方法进行一次总结,也算一次温故而知新。

    channel.exchangeDeclare()

    参数:队列名称,是否持久,是否独家,自动删除,参数
    QueueDeclare(string queue,durable true,exclusive false,autoDelete false, IDictionary<string, object> arguments);

    queue:队列名称(声明);
    durable:bool类型,true:在服务器重启时,能够存活;
    excludsive:是否为当前连接的专用队列,在连接断后,会自动删除该队列,生产环境中应该很少用到(是否独家);
    autoDelete:当没有任何消费者使用时,自动删除该队列;
    arguments:参数信息,参数设置。

    channel.ExchangeDeclare()

    参数:交换名称,类型,是否持久,自动删除,参数
    ExchangeDeclare(string exchange,string type,bool durable,bool autoDelete,IDictionary<string, object> arguments)
    exchange:交换名称(声明);
    type:类型有三种:direct,fanout,topic,三种主要类型(前面demo中我们都有专题讲解,详细案例);
    durable:bool类型,true:服务器重启会保留下来Exchange。警告:仅设置此选项,不代表消息持久化。即不保证重启后消息还在;
    autoDelete:Bool类型,true:当已经没有消费者时,服务器是否可以删除该Exch;
    arguments:参数设置。

     channel.QueueBind()

    参数:队列名称,交换机名称,绑定键
    QueueBind(string queue,string exchange,string routingKey);

    queue:声明队列的名称;
    exchange:声明交换机的名称;
    routingKey:用于通过绑定bindingkey将queue到exchange,之后便可以进行消息接受。

    channel.BasicPulish()

    参数:交换机名称,路由键,参数设置,内容
    BasicPublish(string exchange, string routingKey, IBasicProperties basicProperties, byte[] body);

    exchange:交换机名称;
    routingKey:路由键;
    basicproperties:参数的设置,值得注意是:basicProperties。deliverymodel:0不持久化,1持久化,这里指的是消息持久化;
    body:(字节)内容。

    channel.BasicAck()

    参数:该消息的index,
    BasicAck(ulong deliveryTag, bool multiple);

    deliveryTag:该消息的index;
    multiple:是否批量true:将一次性ack所有小于deliveryTag的消息;确认收到消息。

    channel.BasicGet()

    参数:队列名称; 可理解 是个消息标记,True:消息读取自动排除,下次不会读取到,false 消息没有排除,一直存在,
    BasicGet(string queue, bool noAck);

    queue:队列名称;
    noAck:消息的确认,True:消息读取自动排除,下次不会读取到;false 消息没有排除,一直存在。

    channel.BasicConsume()

    参数:队列名称;消息标记;消费者名称
    BasicConsume(string queue, bool noAck, IBasicConsumer consumer);

    quere:队列名称;
    noAck:消息的确认,True:消息读取自动排除,下次不会读取到;false 消息没有排除,一直存在;
    consumer:消费者名称。

    channel.BasicQos()

    参数:0,设置RabbitMQ不要同时给一个消费者推送多余N个消息;bool类型,是否将上面设置应用与channel,简答点说,就是channel级别,还是consumer级别
    BasicQos(uint prefetchSize, ushort prefetchCount, bool global);

    perfetchSize:0;设置为0,没有实际研究意义;
    perfetchcount:会告诉RabbitMQ不要同时给一个消费者推送多于N个消息,一旦N个消息还没有ack,则将consume将block掉,知道消息ack;
    global:bool类型,将上面设置应用与channel,简单说,就是上面限制channel级别还是consumer级别。

     

    end

     RabbitMQ写到这里,即将是尾声了,我也对RabbitMQ有了一定了解和认识,博客有时候不止帮助别人,某天回头温故的时候轻易上手,不会太耿,我会在整理看看相关资料,如果还有,继续出相关文档,如果没有,我就要进入下一个系列学习了。。。。哈哈哈,请举砖关注。。。。。。。其实官方提供的资料,demo已经足够我们使用各种场景,主要还是自己在项目和学习中去领悟,能熟练掌握场景下的使用。

    • 博主是利用读书、参考、引用、抄袭、复制和粘贴等多种方式打造成自己的纯镀 24k 文章,请原谅博主成为一个无耻的文档搬运工!
    • 小弟刚迈入博客编写,文中如有不对,欢迎用板砖扶正,希望给你有所帮助。
  • 相关阅读:
    NTDLL未文档化函数RtlGetNtVersionNumbers获取操作系统版本
    FormatMessage与GetLastError配合使用,排查windows api调用过程中的错误
    [翻译]:怎样从C/C++代码中对C#进行回调
    解决libcurl7.50.3在windows XP SP3 VC++ 6.0下编译报错 unresolved external symbol __imp__IdnToAscii@20 unresolved external symbol __imp__IdnToUnicode@20
    Windows XP SP3 VC6环境下成功编译openssl-0.9.8zh
    Windows XP SP3下编译安装openssl-1.1.0b
    Ubuntu关闭自动更新
    IDEA中分析JVM堆导出文件heapdump-1591244153347.hprof文件
    Linux环境下非root用户通过防火墙nat将端口转发到8080端口
    Linux自定义java程序运行脚本的命令
  • 原文地址:https://www.cnblogs.com/lrzr/p/7406317.html
Copyright © 2011-2022 走看看