Я новичок в этой комбинации RabbitMQ, EasyNetQ, TopShelf.На данный момент я не использую DI.
Я пытаюсь подписать очередь, используя EasyNetQ.Подписаться работает с этим консольным приложением, код
class Program
{
static void Main(string[] args)
{
using (var bus = RabbitHutch.CreateBus("host=localhost"))
{
bus.Subscribe<Entity>("entity", Handler);
Console.ReadLine();
}
}
private static void Handler(Entity obj)
{
Console.WriteLine($"{obj.ID}, {obj.Name}");
}
}
С TopShelf он не затрагивает метод Handler.TopShelf или EasyNetQ
class Program
{
static void Main(string[] args)
{
HostFactory.Run(config =>
{
config.Service<TestEasyNet>(service =>
{
service.ConstructUsing(s => new TestEasyNet());
service.WhenStarted(s => s.Start());
service.WhenStopped(s => s.Stop());
});
config.SetServiceName("TestSubscribe");
config.SetDisplayName("Test Subscribe");
config.SetDescription("Test Subscribe");
});
}
}
class TestEasyNet
{
public void Start()
{
using (var bus = EasyNetQ.RabbitHutch.CreateBus("host=localhost"))
{
bus.Subscribe<Entity>("entity", Handler);
}
}
private void Handler(Entity obj)
{
Console.WriteLine("Subscribing");
Console.WriteLine($"{obj.ID}, {obj.Name}");
}
public void Stop()
{ }
}
не сообщают об ошибке, сообщающей код публикации
class Program
{
static void Main(string[] args)
{
HostFactory.Run(c =>
{
c.Service<Hosting>(service =>
{
service.ConstructUsing(s => new Hosting());
service.WhenStarted(s => s.Start());
service.WhenStopped(s => s.Stop());
});
c.SetServiceName("TempService");
c.SetDisplayName("Temp Service");
c.SetDescription("Temp Service");
});
}
}
public class Hosting
{
public void Start()
{
var entity = new Entity()
{
ID = 1,
Name = "Entity 1"
};
var entity2 = new Entity()
{
ID = 2,
Name = "Entity 2"
};
var entity3 = new Entity()
{
ID = 3,
Name = "Entity 3"
};
using (var bus = RabbitHutch.CreateBus("host=localhost"))
{
bus.Publish<Entity>(entity);
bus.Publish<Entity>(entity2);
bus.Publish<Entity>(entity3);
}
}
public void Stop()
{
}
}
Я не могу понять, где я ошибаюсь!