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

  • 相关阅读:
    Largest Rectangle in Histogram
    Valid Sudoku
    Set Matrix Zeroes
    Unique Paths
    Binary Tree Level Order Traversal II
    Binary Tree Level Order Traversal
    Path Sum II
    Path Sum
    Validate Binary Search Tree
    新手程序员 e
  • 原文地址:https://www.cnblogs.com/lgzslf/p/13231010.html
Copyright © 2011-2022 走看看