-
Notifications
You must be signed in to change notification settings - Fork 56
Self hosting Web API service (RabbitMQ callable)
Sunny Ahuwanya edited this page Jan 25, 2016
·
12 revisions
Follow these steps to call a self hosted Web API service through RabbitMQ using the RestBus library.
Create a new Console application, which will serve as the service and install the Microsoft.AspNet.WebApi.OwinSelfHost, RestBus.RabbitMQ and RestBus.WebApi NuGet packages.
PM> Install-Package Microsoft.AspNet.WebApi.OwinSelfHost
PM> Install-Package RestBus.RabbitMQ
PM> Install-Package RestBus.WebApi
This code example is a modification of the Use OWIN to Self-Host ASP.NET Web API tutorial
- You need an installation of RabbitMQ to run the code sample.
- Note that samba is the unique name of the service in this example.
using Microsoft.Owin.Hosting;
using Owin;
using RestBus.RabbitMQ;
using RestBus.RabbitMQ.Subscription;
using RestBus.WebApi;
using System;
using System.Collections.Generic;
using System.Web.Http;
class Program
{
static void Main()
{
//Initialize startup object
var startup = new Startup();
string baseAddress = null;
//baseAddress = "http://localhost:9000/"; //Uncomment this line to also listen on localhost:9000
//Start WebAPI OWIN host
using (WebApp.Start(url: baseAddress, startup: startup.Configuration))
{
//Start RestBus Subscriber/host
var amqpUrl = "amqp://localhost:5672"; //AMQP URI for RabbitMQ server
var serviceName = "samba"; //Uniquely identifies this service
var msgMapper = new BasicMessageMapper(amqpUrl, serviceName);
var subscriber = new RestBusSubscriber(msgMapper);
using (var host = new RestBusHost(subscriber, startup.Config))
{
host.Start();
Console.ReadLine();
}
}
}
}
public class Startup
{
HttpConfiguration config = new HttpConfiguration();
public HttpConfiguration Config
{
get { return config; }
}
// This code configures Web API. The Startup class is specified as a type
// parameter in the WebApp.Start method.
public void Configuration(IAppBuilder appBuilder)
{
// Configure Web API for self-host.
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
appBuilder.UseWebApi(config);
}
}
public class ValuesController : ApiController
{
// GET api/values
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
// GET api/values/5
public string Get(int id)
{
return "value";
}
// POST api/values
public void Post([FromBody]string value)
{
}
// PUT api/values/5
public void Put(int id, [FromBody]string value)
{
}
// DELETE api/values/5
public void Delete(int id)
{
}
}
A working example of a self hosted Web API service is in the Examples project.