zoukankan      html  css  js  c++  java
  • RabbitMQ在C#中的使用

         RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现,官网地址:http://www.rabbitmq.com。RabbitMQ作为一个消息代理,主要负责接收、存储和转发消息,它提供了可靠的消息机制和灵活的消息路由,并支持消息集群和分布式部署,常用于应用解耦,耗时任务队列,流量削锋等场景。

        研究了一段时间,发现几篇C#版的很好的文章:

        1、捞月亮的猴子:https://www.cnblogs.com/wyy1234/category/1321800.html

        2、努力决定下限:https://www.cnblogs.com/refuge/category/1395422.html

       

       封装好的类库Demo:

      1、王清培: https://www.cnblogs.com/wangiqngpei557/p/4751124.html

               github地址:https://github.com/Plen-wang/rabbitmqclient

      2、陈珙:    https://github.com/SkyChenSky/Sikiro.Mq.Rabbit

        具体的内容不再重复,把测试中发现的一些问题或遇到的坑简单记录如下:

      1、安装RabbitMQ之前,要先安装Erlang,而且不同的RabbitMQ版本需要的Erlang版本不同,而且最好为二者都设置环境变量;

      2、通过对其BasicPublish方法的研究,发现其第一个参数是Exchange,第二个参数是routingKey,因此,一些资料上所说的基本消息模型与WORK消息模型,为第2个参数传递的都是队列名,即所谓“直接将消息发布到队列”,本质上属于使用匿名的Exchange将消息发送到指定队列(也就是说,对BasicPublish方法来说,如果Exchange为空字符串,则第2个参数的含义变成了队列名)。

      3、根据一些资料上所说,实际项目中,一般是手动在Web管理平台上完成Exchange与Queue的创建,并对它们进行绑定和设置BindingKey(绑定时的RoutingKey参数);

      4、如果要在发布时使用优先级,必须设置队列的x-max-priority属性;(资料上设置的都是10,其他值是否可以没有试)

      5、RabbitMQ中获取消息的模式有两种:(1)订阅模式(或者叫推模式),使用的是EventingBasicConsumer,有了消息自动接收,属于监听的范畴;(2)拉模式:使用的是BasicGet方法,由调用方决定什么时间读取消息(这种模式估计实际使用意义不大);

      6、为了保证消息的安全,避免消息丢失,RabbitMQ有一些安全机制。

        【1】首先,应该设置“持久化”,将消息持久化到数据库,有三个地方需要设置;

          (1)队列;(2)Exchange;(3)在发布消息的方法BasicPublish中的参数的Persistent设置为True或设置DeliveryMode为2;

            var properties = Context.SendChannel.CreateBasicProperties();

                           properties.DeliveryMode = 2; //表示持久化消息

                          //properties.Persistent = true;//持久化消息,与上一句功能相同  

        【2】发布确认:确保生产者将消息发送到Broker。有两种方式:tx事务机制(因为效率较低不推荐使用)与Confirm机制(推荐使用异步方式BasicAcks与BasicNacks,但是没有测试成功,不知道为什么没有触发);

        【3】消费确认:其实就是应答,消费时不要设置成自动应答,手动使用BasicAck方法应答即可。

        

        暂时写这么多吧,缺少实际使用经验,认识还不深。

     

    https://www.cnblogs.com/wyy1234/p/10743567.html

  • 相关阅读:
    三代测序及基于三代数据的基因组组装流程评估
    组装技术的新进展 New advances in sequence assembly.
    细菌完成图组装软件简单介绍 细菌
    个人基因组测序将进入千美元费用时代
    HALC:用于长读取错误纠正的高吞吐量算法
    基因组装配新前沿:长片段完成完整的基因组
    第三代PacBio测序技术的测序原理和读长
    三代组装小基因组研究综述
    矩阵连乘 动态规划
    poj 1723 中位数
  • 原文地址:https://www.cnblogs.com/lgzslf/p/13231010.html
Copyright © 2011-2022 走看看