如何将 MassTransit 演示分成生产者和消费者应用程序
How to separate MassTransit demo into producer and consumer applications
我试图将 MassTransit 演示 (https://masstransit-project.com/MassTransit/quickstart.html) 分成两个单独的应用程序,但我的消费者应用程序没有收到任何消息。
我创建了 3 个项目:发送、接收和消息。 Send 包含一个 Send
class 这是我的生产者代码,Receive 包含一个 Receive
class 这是我的消费者代码,Messages 包含我的消息的 classes .
这是我的 Send
class:
using MassTransit;
using Messages;
using System;
namespace MassTransitTest
{
class Send
{
static void Main(string[] args)
{
var bus = Bus.Factory.CreateUsingRabbitMq(config =>
{
var host = config.Host(new Uri("rabbitmq://localhost"), c =>
{
c.Username("guest");
c.Password("guest");
});
});
bus.Start();
Console.WriteLine("Publishing message");
bus.Publish(new TextMessage() { Text = "Testing 12345" });
bus.Stop();
Console.ReadLine();
}
}
}
这是我的 Receive
class:
using MassTransit;
using Messages;
using System;
namespace Receive
{
class Receive
{
static void Main(string[] args)
{
var bus = Bus.Factory.CreateUsingRabbitMq(config =>
{
var host = config.Host(new Uri("rabbitmq://localhost"), c =>
{
c.Username("guest");
c.Password("guest");
});
config.ReceiveEndpoint(host, "queue", endpoint =>
{
endpoint.Handler<TextMessage>(context =>
{
return Console.Out.WriteLineAsync($"{context.Message.Text}");
});
});
});
bus.Start();
Console.WriteLine("Receive listening for messages");
Console.ReadLine();
bus.Stop();
}
}
}
最后,这是我的 TextMessage
class:
using System;
namespace Messages
{
public class TextMessage
{
public string Text { get; set; }
}
}
当我从我的 Send
class 发送消息时,我想接收它并从我的 Receive
class.[=21 将其输出到控制台=]
我想通了! Publish
是 returns 一个 Task
的异步消息,所以我需要 await
然后一切正常。在消息被触发之前,我的 Send
程序正在退出。
我试图将 MassTransit 演示 (https://masstransit-project.com/MassTransit/quickstart.html) 分成两个单独的应用程序,但我的消费者应用程序没有收到任何消息。
我创建了 3 个项目:发送、接收和消息。 Send 包含一个 Send
class 这是我的生产者代码,Receive 包含一个 Receive
class 这是我的消费者代码,Messages 包含我的消息的 classes .
这是我的 Send
class:
using MassTransit;
using Messages;
using System;
namespace MassTransitTest
{
class Send
{
static void Main(string[] args)
{
var bus = Bus.Factory.CreateUsingRabbitMq(config =>
{
var host = config.Host(new Uri("rabbitmq://localhost"), c =>
{
c.Username("guest");
c.Password("guest");
});
});
bus.Start();
Console.WriteLine("Publishing message");
bus.Publish(new TextMessage() { Text = "Testing 12345" });
bus.Stop();
Console.ReadLine();
}
}
}
这是我的 Receive
class:
using MassTransit;
using Messages;
using System;
namespace Receive
{
class Receive
{
static void Main(string[] args)
{
var bus = Bus.Factory.CreateUsingRabbitMq(config =>
{
var host = config.Host(new Uri("rabbitmq://localhost"), c =>
{
c.Username("guest");
c.Password("guest");
});
config.ReceiveEndpoint(host, "queue", endpoint =>
{
endpoint.Handler<TextMessage>(context =>
{
return Console.Out.WriteLineAsync($"{context.Message.Text}");
});
});
});
bus.Start();
Console.WriteLine("Receive listening for messages");
Console.ReadLine();
bus.Stop();
}
}
}
最后,这是我的 TextMessage
class:
using System;
namespace Messages
{
public class TextMessage
{
public string Text { get; set; }
}
}
当我从我的 Send
class 发送消息时,我想接收它并从我的 Receive
class.[=21 将其输出到控制台=]
我想通了! Publish
是 returns 一个 Task
的异步消息,所以我需要 await
然后一切正常。在消息被触发之前,我的 Send
程序正在退出。