Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- namespace CID.MQ.WebAPI
- {
- public class StatusChangesController : ApiController
- {
- // GET /api/statuschanges/id
- public string Get(string id)
- {
- //Get info from database about the message guid and return
- return String.Format("{0} : No Info", id);
- }
- public HttpResponseMessage Post(StatusMessage message)
- {
- RabbitPub<StatusMessage> publisher = new RabbitPub<StatusMessage>();
- publisher.Factory = new Factory<StatusMessage>(message);
- publisher.Publish(message);
- return new HttpResponseMessage(HttpStatusCode.Created)
- {
- Headers =
- {
- Location = new Uri(Request.RequestUri, message.Id)
- }
- };
- }
- }
- public class RabbitPub<T> where T : StatusMessage
- {
- public Factory<T> Factory { get; set; }
- public void Publish(StatusMessage sm)
- {
- using (var connection = CreateConnection())
- {
- using (var model = connection.CreateModel())
- {
- model.ExchangeDeclare(ConfigurationManager.AppSettings["mqStatusExchange"], ExchangeType.Topic, true);
- foreach (var key in Factory.Keys)
- {
- model.BasicPublish(
- ConfigurationManager.AppSettings["mqStatusExchange"],
- key,
- false, false,
- model.CreateBasicProperties(),
- Encoding.UTF8.GetBytes(Factory.BuildRabbitMessage(sm).body)
- );
- }
- }
- }
- }
- public IConnection CreateConnection()
- {
- return new ConnectionFactory
- {
- HostName = ConfigurationManager.AppSettings["mqHost"],
- UserName = ConfigurationManager.AppSettings["mqUser"],
- Password = ConfigurationManager.AppSettings["mqPass"],
- }.CreateConnection();
- }
- }
- }
Add Comment
Please, Sign In to add comment