を動作させるために必要な消費者のキューである私はMassTransitとRabbitMQのまわりで私の頭を取得しようとキューイングしています(1日目)初心者 - 出版がMassTransit
私が持っている疑問は、「消費者が必要であるかどうかであります私が最初にDomainとProducerを作ったが、私はRabbitMQ管理ウィンドウで待ち行列に入ったアイテムを見なかったからです。
コンシューマキューが作成されると、メッセージがキューに入れられます。
私の理解に基づいて、Producerはコンシューマーを意識していないため、なぜ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 eコンシューマサービス
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);
}
}
}
コードはwebの例を使用して作成されました。
編集はまた、すべての名前空間が異なるプロジェクトであることを追加したいと思います ドメイン プロデューサー 消費者
よろしく、
月
私はちょうどそこに、Googleのグループがあると私の質問への答えが質問の一つであることがわかりました。 https://groups.google.com/forum/?fromgroups=#!searchin/masstransit-discuss/publishing$20message$20without$20subscriber/masstransit-discuss/RU2_443iak8/OfILeKbfGNQJ – TheMar
私はこの質問を今日閉会とマークし、 Googleグループへのリンクは引き続き表示されます – TheMar