Я пытаюсь получить мою голову вокруг MassTransit и RabbitMQ и массового обслуживания (день 1)Новичок - это потребитель Queue необходимо для того, чтобы Издательское работать в MassTransit
У меня есть вопрос, является ли «Потребитель необходимо для того, чтобы очередь работала в MT. Причина, о которой я спрашиваю, заключается в том, что я сначала создал Domain и Producer, но я не видел в очереди управления RabbitMQ в очереди. "
Когда создается очередь пользователей, я вижу, что сообщение находится в очереди.
Основываясь на моем понимании, Производитель никогда не осведомлен о потребителе, так почему MassTransit потребовал, чтобы потребительская очередь начала публикации сообщений?
Продюсер
using MassTransit;
namespace Producer
{
class Program
{
static void Main(string[] args)
{
Bus.Initialize(sbc =>
{
sbc.UseRabbitMq(); //1
sbc.UseControlBus();
sbc.EnableMessageTracing();
sbc.EnableRemoteIntrospection();
sbc.ReceiveFrom("rabbitmq://localhost/MT.Producer");
sbc.UseControlBus();
});
Bus.Instance.Publish(new NewOrderMessage { OrderName = "Hello World" });
}
}
}
Применение
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MassTransit;
using Topshelf;
namespace Consumer
{
class Program
{
static void Main(string[] args)
{
Bus.Initialize(sbc =>
{
sbc.UseRabbitMq();
sbc.UseRabbitMqRouting();
sbc.ReceiveFrom("rabbitmq://localhost/MT.ConsumerService");
});
var cfg = HostFactory.New(c =>
{
c.SetServiceName("MT.ConsumerService");
c.SetDisplayName("MT.ConsumerService");
c.SetDescription("MT.ConsumerService");
//c.BeforeStartingServices(s => {});
c.Service<ConsumerService>(a =>
{
a.ConstructUsing(service => new ConsumerService());
a.WhenStarted(o => o.Start());
a.WhenStopped(o => o.Stop());
});
});
try
{
cfg.Run();
}
catch (Exception e)
{
Console.WriteLine(e.Message);
throw;
}
}
}
}
Послание
namespace Domain
{
public class NewOrderMessage
{
public NewOrderMessage()
{
OrderId = Guid.NewGuid();
}
public Guid OrderId { get; set; }
public string OrderName { get; set; }
}
}
Th е бытовое обслуживание
namespace Consumer
{
class ConsumerService
{
readonly IServiceBus _bus;
public ConsumerService()
{
_bus = Bus.Instance;
}
public void Start()
{
_bus.SubscribeHandler<NewOrderMessage>(CreateOrder);
Console.WriteLine("Starting....");
}
public void Stop()
{
Console.WriteLine("Stopping....");
}
public void CreateOrder(NewOrderMessage command)
{
Console.WriteLine("Creating Order: {0} with Id: {1}", command.OrderName, command.OrderId);
}
}
}
код был создан с использованием примеров на Интернете.
Редактировать хотел бы также добавить, что все пространства имен различных проектов Domain Производитель Consumer
С уважением,
Mar
Я просто нашел, что есть группа Google и ответ на мой вопрос в одном из вопросов, которые задают там. https://groups.google.com/forum/?fromgroups=#!searchin/masstransit-discuss/publishing$20message$20without$20subscriber/masstransit-discuss/RU2_443iak8/OfILeKbfGNQJ – TheMar
Я помету этот вопрос как закрытый сегодня, чтобы ссылка выше на google group по-прежнему отображается – TheMar