Guest User

Untitled

a guest
Oct 16th, 2018
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.10 KB | None | 0 0
  1. namespace CID.MQ.WebAPI
  2. {
  3. public class StatusChangesController : ApiController
  4. {
  5. // GET /api/statuschanges/id
  6. public string Get(string id)
  7. {
  8. //Get info from database about the message guid and return
  9. return String.Format("{0} : No Info", id);
  10. }
  11.  
  12. public HttpResponseMessage Post(StatusMessage message)
  13. {
  14. RabbitPub<StatusMessage> publisher = new RabbitPub<StatusMessage>();
  15. publisher.Factory = new Factory<StatusMessage>(message);
  16. publisher.Publish(message);
  17.  
  18. return new HttpResponseMessage(HttpStatusCode.Created)
  19. {
  20. Headers =
  21. {
  22. Location = new Uri(Request.RequestUri, message.Id)
  23. }
  24. };
  25. }
  26. }
  27.  
  28. public class RabbitPub<T> where T : StatusMessage
  29. {
  30. public Factory<T> Factory { get; set; }
  31.  
  32. public void Publish(StatusMessage sm)
  33. {
  34. using (var connection = CreateConnection())
  35. {
  36. using (var model = connection.CreateModel())
  37. {
  38. model.ExchangeDeclare(ConfigurationManager.AppSettings["mqStatusExchange"], ExchangeType.Topic, true);
  39. foreach (var key in Factory.Keys)
  40. {
  41. model.BasicPublish(
  42. ConfigurationManager.AppSettings["mqStatusExchange"],
  43. key,
  44. false, false,
  45. model.CreateBasicProperties(),
  46. Encoding.UTF8.GetBytes(Factory.BuildRabbitMessage(sm).body)
  47. );
  48. }
  49. }
  50. }
  51. }
  52.  
  53. public IConnection CreateConnection()
  54. {
  55. return new ConnectionFactory
  56. {
  57. HostName = ConfigurationManager.AppSettings["mqHost"],
  58. UserName = ConfigurationManager.AppSettings["mqUser"],
  59. Password = ConfigurationManager.AppSettings["mqPass"],
  60. }.CreateConnection();
  61. }
  62. }
  63. }
Add Comment
Please, Sign In to add comment