RabbitMQPrize.cs 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using RabbitMQ.Client;
  5. using RabbitMQ.Client.Events;
  6. using Library;
  7. using System.Threading;
  8. namespace MySystem
  9. {
  10. public class RabbitMQPrize
  11. {
  12. public readonly static RabbitMQPrize Instance = new RabbitMQPrize();
  13. string UserName,Password,HostName,VirtualHostName;
  14. private RabbitMQPrize()
  15. {
  16. UserName = ConfigurationManager.AppSettings["MqPrizeUserName"].ToString();
  17. Password = ConfigurationManager.AppSettings["MqPrizePassword"].ToString();
  18. HostName = ConfigurationManager.AppSettings["MqPrizeHostName"].ToString();
  19. VirtualHostName = ConfigurationManager.AppSettings["MqPrizeVirtualHostName"].ToString();
  20. }
  21. #region 单对单发送
  22. public void SendMsg(string content, string QueueName)
  23. {
  24. _channel_send.BasicPublish("", QueueName, null, Encoding.Default.GetBytes(content));
  25. function.WriteLog(DateTime.Now.ToString() + "\n" + QueueName + "\n" + content + "\n\n\n", "SendMsg2");
  26. }
  27. #endregion
  28. #region 单对单接收
  29. public static IModel _channel_send;
  30. public void CreateConn(string QueueName)
  31. {
  32. var factory = new ConnectionFactory()
  33. {
  34. UserName = UserName,
  35. Password = Password,
  36. AutomaticRecoveryEnabled = true, //如果connection挂掉是否重新连接
  37. TopologyRecoveryEnabled = true, //连接恢复后,连接的交换机,队列等是否一同恢复
  38. VirtualHost = VirtualHostName,
  39. };
  40. List<AmqpTcpEndpoint> p = new List<AmqpTcpEndpoint>();
  41. string[] HostNames = HostName.Split(',');
  42. foreach (string subHostName in HostNames)
  43. {
  44. string[] subHostNameData = subHostName.Split(':');
  45. p.Add(new AmqpTcpEndpoint(subHostNameData[0], int.Parse(subHostNameData[1])));
  46. }
  47. var conn = factory.CreateConnection(p);
  48. _channel_send = conn.CreateModel();
  49. _channel_send.ExchangeDeclare("kxs_direct_ranch", "direct", true);
  50. _channel_send.QueueDeclare(QueueName, true, false, false);
  51. _channel_send.QueueBind(QueueName, "kxs_direct_ranch", QueueName);
  52. }
  53. #endregion
  54. }
  55. }