如果你连接过关系数据库,例如SQL Server。你会发现EasyNetQ处理connections有点奇怪。和关系数据库通讯一直都是通过client开始的。Client 打开一个连接, 发出一个SQL命令,如有必要时,处理结果,然后关闭连接。一般建议是你维持一个打开的连接,时间要尽可能短,通过API断开连接池。

诸如与RabbitMQ这样的消息代理会话,是有些不同的,因为连接倾向于在应用的整个生命周期内保持连接状态。通常你打开一个连接,创建一个订阅,然后打开连接后,等待消息到来。EasyNetQ不能保证代理在所有的时间都是可用的。相反它使用了延迟连接的方法,在后台线程轮询终结点,直到连接成功。假如服务器出于任何原因连接断开了(可能是网络故障,或许是RabbitMQ Server自身的原因断开了),EasyNetQ将恢复轮询终结点直到重新连接成功。

标准的做法是在你应用的生命周期内只创建一个IBus实例.当你的应用关闭后Dispose掉它。
延迟连接到RabbitMQ服务器是通过IBus接口表示的。大部分EasyNetQ操作都是IBus上的方法。创建一个IBus实例如下:

var bus = RabbitHutch.CreateBus("host=myServer;virtualHost=myVirtualHost;username=mike;password=topsecret")

这个连接字符串是由键值对组成,格式如下 key=value, 通过分号;分隔。只有一个必选的字段是host.可能的连接字符串值是:

  • host(例如 host=localhost 或 host=192.168.2.56 或 host=myhost.mydomain.com)这个字段是必选的。如要具体指定你要连接服务器端口,你用标准格式 host:port(例如:host=myhost .com:5673)。假如你省略了端口号,AMQP默认端口是5672.连接到RabbitMQ集群,需要指定每一个集群节点用逗号分隔(例如:host:myhost1.com,myhost2.com,myhost3.com).更多详情请参考Cluster Support

  • virtualhost(例如:virtualHost=myVirturalHost)默认虚拟主机是'/'

  • username(例如:username=mike)默认是'guest'(对于非'localhost'主机你需要使用其他用户名)

  • password (例如:password=mysecret)默认为'guest'

  • requestedHearbeat(例如:requestHearbeat=10)默认为10秒钟。没有心跳设置为0

  • prefetchcount(例如:prefetchcount=1) 默认为50.这个值是在EasyNetQ发送ack之前发送给RabbitMQ的消息数。不限制设置为0(不推荐). 为了在消费者之间保持公平和平衡设置为1.

  • publisherConfirms(例如:publisherconfirms=true)默认是false。 如何开启Publisher Confirms?

  • persistentMessages(例如:persistentMessages=false)默认为true。这个决定了在发送消息时采用什么样的delivery_mode。 false=1,true=2. 设置为true,RabbitMQ将会把消息持久化到磁盘,并且在服务器重启后仍会存在。设置为false可以提高性能收益。

  • product(例如:product=我的现实中重要的服务)在EasyNetQ 0.27.3中被引进。默认值是Bus的实例名。
    此处输入的值将显示在RabbitMQ的后台管理界面中。

  • platform(例如:platform=my.fully.qualified.domain.name)在EasyNetQ 0.27.3中被引进。默认值是运行着客户端处理Bus的实例的机器的主机名。此处输入的值将会线上在RabbitMQ管理端界面中。

  • timeout(例如:timeout=60)模式值为10秒。在EasyNet 0.17中被引进。可解析类型为System.UInt16从0到65535范围内的值。不限制超时时间设置为0.当超时事时抛出System.TimeoutException.

关闭连接,只要简单的dispose,如下:

bus.Dispose();

这样就关闭了EasyNetQ使用过的连接、管道、消费者和所有其他资源。

原文地址:https://github.com/EasyNetQ/EasyNetQ/wiki/Connecting-to-RabbitMQ

转载于:https://www.cnblogs.com/HuangLiang/p/lianghuang.html

2-用EasyNetQ连接RabbitMQ(黄亮翻译)相关推荐

  1. 转载 1-EasyNetQ介绍(黄亮翻译) https://www.cnblogs.com/HuangLiang/p/7105659.html

    EasyNetQ 是一个容易使用,坚固的,针对RabbitMQ的 .NET API. 假如你尽可能快的想去安装和运行RabbitMQ,请去看入门指南. EasyNetQ是为了提供一个尽可能简洁的适用与 ...

  2. PHP 连接 Rabbitmq 实例代码(亲测通过)

    接下来我们用 php 连接 rabbitmq 玩一玩. 还没有安装 rabbitmq ,请参考 Rabbitmq 安装 还没有安装 PHP 的 AMQP 扩展,参考 PHP AMQP 扩展安装 一些概 ...

  3. 使用php-amqplib连接rabbitMQ 学习笔记及总结

    1.使用composer安装php-amqplib 在你的项目中添加一个 composer.json文件:{"require": {"php-amqplib/php-am ...

  4. 连接rabbitmq超时问题(自定义、与springboot连用等)

    自定义连接工厂 通过自定义连接工厂连接时,ip.端口都正确的情况下,连接rabbitmq还是不行,报异常 Exception in thread "main" java.util. ...

  5. 宝塔 php5.6 极速安装_宝塔中极速安装的PHP如何使用AMQP连接RabbitMQ

    前言: 有些人为了让项目快速上线,服务器往往安装宝塔面板,然后再极速安装LNMP.尽管环境搭建的时间省了,但是宝塔上PHP中扩展包没有提供AMQP.这时候只是为了使用消息队列而对PHP大动干戈, 不如 ...

  6. EasyNetQ操作RabbitMQ

    EasyNetQ 是一个容易使用,专门针对RabbitMQ的 .NET API.EasyNetQ是为了提供一个尽可能简洁的适用与RabbitMQ的.NET类库. 下面看下怎么集成. 1.nuget 安 ...

  7. 基于EasyNetQ的RabbitMQ封装类

    最近在捣鼓RabbitMQ,为了方便使用,自己基于EasyNetQ封装了一个类,现在贴出来还望各路大佬神明指点,共同学习. 1 /// <summary> 2 /// RabbitMQ客户 ...

  8. .NET Core微服务之基于EasyNetQ使用RabbitMQ消息队列

    Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.消息队列与RabbitMQ 1.1 消息队列 "消息"是在两台计算机间传送的数据单位.消息可以非常简单,例如只包含 ...

  9. .NET CoreWebApi基于EasyNetQ使用RabbitMQ消息队列

    一.消息队列与RabbitMQ 1.1 消息队列 "消息"是在两台计算机间传送的数据单位.消息可以非常简单,例如只包含文本字符串:也可以更复杂,可能包含嵌入对象.消息被发送到队列中 ...

最新文章

  1. 2021-03-26习题4-7 最大公约数和最小公倍数 (15 分)
  2. 一个人会python能做什么_利用Python来预测一个人有没有女朋友!无所不能!
  3. linux下模糊搜索命令,linux命令当前文件夹下面模糊搜索文件
  4. pymongo的使用
  5. Docker 安装 Tomcat
  6. 计算机应用基础试题号2007,2006-2007计算机应用基础期末试题(A卷).pdf
  7. python glob模块的应用
  8. 怎样调整服务器C盘空间
  9. Keras AlexNet 网络实现 Kaggle 猫狗大战
  10. 电脑窗口切换常用的快捷键有哪些
  11. JavaScript高级程序设计 第4版
  12. 怎样删除usb计算机连接网络打印机驱动,打印机USB连接安装设置及常见问题处理...
  13. windows server2019共享选项中网络发现无法启用
  14. Web设计中最常用的10种色调以及示例演示
  15. [附源码]java+ssm计算机毕业设计java交通违章举报平台lxsqm【源码、数据库、LW、部署】
  16. 由点及面,一叶知秋----集合大家族
  17. element-ui表格行不对齐
  18. Java干货(一)----Java重写时应当遵守的10条规则
  19. 2017年3月17日华为内推上机考试
  20. J9数字论:什么是Web3.0概念?

热门文章

  1. 深度学习《EBGAN》
  2. 《Pytorch - 线性回归模型》
  3. 漫步最优化四十五——矩阵S的生成
  4. 2.12 主成分分析(下)
  5. AMI corpus download
  6. 【例题+习题】【数值计算方法复习】【湘潭大学】(四)
  7. 一个关于先验概率、似然函数与后验概率计算的小例子
  8. C++/C--动态二维数组的内存分配与释放【转载】
  9. Multi_thread--Linux下多线程编程互斥锁和条件变量的简单使用
  10. 【计算机视觉】opencv姿态解算6 理论算法调研 PNP问题 5种算法