thrift/contrib/Rebus/Program.cs
2014-03-07 19:42:28 +01:00

82 lines
2.7 KiB
C#

/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
using Rebus.Configuration;
using Rebus.RabbitMQ;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using RebusSample.Client;
using RebusSample.Server;
namespace RebusSample
{
class Program
{
static BuiltinContainerAdapter StartRequestServer(string server)
{
// client Rebus configuration
var adapter = new BuiltinContainerAdapter();
Configure.With(adapter)
.Transport(t => t.UseRabbitMq("amqp://" + server, "MathRequests", "MathRequestErrors"))
.MessageOwnership(o => o.FromRebusConfigurationSection())
.CreateBus().Start();
// register all relevant message handlers
adapter.Register(typeof(MathRequestCallHandler));
return adapter;
}
static BuiltinContainerAdapter StartResponseServer(string server)
{
// client Rebus configuration
var adapter = new BuiltinContainerAdapter();
Configure.With(adapter)
.Transport(t => t.UseRabbitMq("amqp://" + server, "MathResponses", "MathResponseErrors"))
.MessageOwnership(o => o.FromRebusConfigurationSection())
.CreateBus().Start();
// register all relevant message handlers
adapter.Register(typeof(MathResponseCallHandler));
return adapter;
}
static void Main(string[] args)
{
string server = "localhost";
// start all servers
var req = StartRequestServer(server);
var rsp = StartResponseServer(server);
// send the first message
var random = new Random();
var client = new MathRequestClient(server);
client.DoTheMath(random.Next(), random.Next());
// now what?
Console.Write("Hit <ENTER> to stop ... ");
Console.ReadLine();
}
}
}