Guest User

Untitled

a guest
Jul 31st, 2018
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.32 KB | None | 0 0
  1. public ReturnCode AtomicPublish(string userName, string password, string virtualHost, string hostName, string exchangeName, string queueName, string message)
  2. {
  3. using (IConnection conn = new ConnectionFactory()
  4. {
  5. UserName = userName,
  6. Password = password,
  7. VirtualHost = virtualHost,
  8. HostName = hostName
  9. }.CreateConnection())
  10. {
  11. using (IModel model = conn.CreateModel())
  12. {
  13. model.ExchangeDeclare(exchangeName, ExchangeType.Fanout, true);
  14. model.QueueDeclare(queueName, true, false, false, null);
  15. model.QueueBind(queueName, exchangeName, "", null);
  16. byte[] messageBodyBytes = System.Text.Encoding.UTF8.GetBytes(message);
  17. model.BasicPublish(exchangeName, string.Empty, null, messageBodyBytes);
  18. }
  19. }
  20. return ReturnCode.OK;
  21. }
  22.  
  23. private static IConnection _connection {get;set;}
  24. private static object LockObject = new object();
  25. private static IConnection GetConnection (string username, string password, string virtualHost, string hostName)
  26. get{
  27. // do work here in case the connection is closed as well.
  28. if (_connection == null){
  29. lock(LockObject){
  30. if (_connection == null){
  31. _connection = new ConnectionFactory
  32. {
  33. UserName = userName,
  34. Password = password,
  35. VirtualHost = virtualHost,
  36. HostName = hostName
  37.  
  38. }.CreateConnection();
  39. }
  40. }
  41.  
  42. }
  43. return _connection;
  44. }
  45. }
  46.  
  47. public ReturnCode AtomicPublish(string userName, string password, string virtualHost, string hostName, string exchangeName, string queueName, string message)
  48. {
  49.  
  50. using (IModel model = GetConnection(userName, password, virtualHost, hostName).CreateModel()) //lazy loads the get connection
  51. {
  52. model.ExchangeDeclare(exchangeName, ExchangeType.Fanout, true);
  53. model.QueueDeclare(queueName, true, false, false, null);
  54. model.QueueBind(queueName, exchangeName, "", null);
  55.  
  56. byte[] messageBodyBytes = System.Text.Encoding.UTF8.GetBytes(message);
  57. model.BasicPublish(exchangeName, string.Empty, null, messageBodyBytes);
  58. }
  59.  
  60. return ReturnCode.OK;
  61. }
Add Comment
Please, Sign In to add comment