给我看代码!
下面是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 方法,我们应该可以看到控制台写出输出。