代码改变世界

译MassTransit 快速入门

2018-05-21 16:57  李明成  阅读(...)  评论(...编辑  收藏

给我看代码!

下面是MassTransit的功能设置。

public class YourMessage { public string Text { get; set; } }
public class Program
{
    public static void Main()
    {
        var bus = Bus.Factory.CreateUsingRabbitMq(sbc =>
        {
            var host = sbc.Host(new Uri("rabbitmq://localhost"), h =>
            {
                h.Username("guest");
                h.Password("guest");
            });

            sbc.ReceiveEndpoint(host, "test_queue", ep =>
            {
                ep.Handler<YourMessage>(context =>
                {
                    return Console.Out.WriteLineAsync($"Received: {context.Message.Text}");
                });
            });
        });

        bus.Start();

        bus.Publish(new YourMessage{Text = "Hi"});

        Console.WriteLine("Press any key to exit");
        Console.ReadKey();

        bus.Stop();
    }
}

如何运行的

如果我们构建一个消息系统,我们需要去创建一个消息。YourMessage .NET 类代表我们的消息。注意他仅仅是一个poco。

接下来,我们需要一个程序运行我们的代码,这里我们使用控制器程序 的 main方法。要设置中心,我先从bus静态类开始,然后从Factory扩展点结束。从这里我们调用CreateUsingRabbitMq方法创建一个 RabbitMQ 服务总线实例。这个方法采用lambda,并且有一个参数允许你配置总线的属性。

你的第一个决定是:“我想运行什么传输”在这里我们选择了RabbitMQ (Bus.Factory.CreateUsingRabbitMQ()),因为它是MassTransit的事实上的总线选择。

之后,我们需要配置RabbitMQ host 设置sbc.Host()。第一个参数设置要连接的机器名称和虚拟目录。在此之后, 您可以使用 lambda 来调整所需的任何其他设置。在这里,我们可以看到它设置的用户名和密码。

现在我们有了一个主机监听,我们可以配置一些接收端点sbc.ReceiveEndpoint。我们通过主机连接来侦听,然后我们要侦听哪个队列,最后用lambda来注册我们要使用的每个处理程序。

最后,在配置中,我们有个处理程序 Handler<YourMessage>方法,它为消息类型 YourMessage 订阅一个处理程序, 并采用一个异步 lambda(oh yeah baby TPL),它给出了一个上下文类来处理。在这里,我们通过遍历上下文来访问消息,然后将消息的文本写入控制台。

现在我们有了一个完全配置的总线实例, 并且可以开始处理消息。我们可以抓取我们创建的busControl,调用Start()方法启动,然后循环获取消息。我们再次等待结果,现在我们可以走了。

我们可以调用busControl的Publish 方法,我们应该可以看到控制台写出输出。