设为首页 收藏本站
查看: 677|回复: 0

[经验分享] RabbitMQ .NET消息队列使用入门(一)【简单示例】

[复制链接]

尚未签到

发表于 2017-7-4 23:06:21 | 显示全部楼层 |阅读模式
>{  private static void Main()
  {
  //建立RabbitMQ连接和通道
  var connectionFactory = new ConnectionFactory
  {
  HostName = "127.0.0.1",
  Port = 5672,
  UserName = "guest",
  Password = "guest",
  Protocol = Protocols.DefaultProtocol,
  AutomaticRecoveryEnabled = true, //自动重连
  RequestedFrameMax = UInt32.MaxValue,
  RequestedHeartbeat = UInt16.MaxValue //心跳超时时间
  };
  try
  {
  using (var connection = connectionFactory.CreateConnection())
  {
  using (var channel = connection.CreateModel())
  {
  //创建一个新的,持久的交换区
  channel.ExchangeDeclare("SISOExchange", ExchangeType.Direct, true, false, null);
  //创建一个新的,持久的队列, 没有排他性,与不自动删除
  channel.QueueDeclare("SISOqueue", true, false, false, null);
  // 绑定队列到交换区
  channel.QueueBind("SISOqueue", "SISOExchange", "optionalRoutingKey");
  // 设置消息属性
  var properties = channel.CreateBasicProperties();
  properties.DeliveryMode = 2; //消息是持久的,存在并不会受服务器重启影响
  //准备开始推送
  //发布的消息可以是任何一个(可以被序列化的)字节数组,如序列化对象,一个实体的ID,或只是一个字符串
  var encoding = new UTF8Encoding();
  for (var i = 0; i < 10; i++)
  {
  var msg = string.Format("这是消息 #{0}?", i + 1);
  var msgBytes = encoding.GetBytes(msg);
  //RabbitMQ消息模型的核心思想就是,生产者不把消息直接发送给队列。实际上,生产者在很多情况下都不知道消息是否会被发送到一个队列中。取而代之的是,生产者将消息发送到交换区。交换区是一个非常简单的东西,它一端接受生产者的消息,另一端将他们推送到队列中。交换区必须要明确的指导如何处理它接受到的消息。是放到一个队列中,还是放到多个队列中,亦或是被丢弃。这些规则可以通过交换区的类型来定义。
  //可用的交换区类型有:direct,topic,headers,fanout。
  //Exchange:用于接收消息生产者发送的消息,有三种类型的exchange:direct, fanout,topic,不同类型实现了不同的路由算法;
  //RoutingKey:是RabbitMQ实现路由分发到各个队列的规则,并结合Binging提供于Exchange使用将消息推送入队列;
  //Queue:是消息队列,可以根据需要定义多个队列,设置队列的属性,比如:消息移除、消息缓存、回调机制等设置,实现与Consumer通信;
  channel.BasicPublish("SISOExchange", "optionalRoutingKey", properties, msgBytes);
  }
  channel.Close();
  }
  }
  }
  catch (Exception ex)
  {
  Console.WriteLine(ex.Message);
  }
  Console.WriteLine("消息发布!");
  Console.ReadKey(true);
  }
  }

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-390808-1-1.html 上篇帖子: c++ 图解快速排序算法 下篇帖子: RestTemplate请求
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表