首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CreateQueues和交易所- MassTransit

CreateQueues和交易所- MassTransit
EN

Stack Overflow用户
提问于 2016-12-23 19:18:34
回答 2查看 1.5K关注 0票数 1

我在RabbitMQ中使用massTransit。使用massTransit发布消息将为我的消息类型创建一个交换。而masstransit使用者将创建到交换的队列和绑定。太好了,让事情变得简单。

在介绍massTransit之前,我使用rabbitMQ的api来创建队列、交换和绑定。我会让发布者和消费者运行相同的设置代码。因此,无论谁先运行所有队列,无论应用程序的哪一部分先运行,都将创建交换和绑定。当在开发环境中运行时,这是非常棒的。

我想知道是否可以用massTransit实现类似的事情?

EN

回答 2

Stack Overflow用户

发布于 2016-12-24 23:26:44

与MassTransit应该相同:消费者将创建绑定到他们消费的消息的交换的队列(具有与消息类型相同的名称)。发布者将创建具有与其发布的消息类型相同的名称的交换。请记住,如果发布或使用的消息具有超类或实现接口,MassTransit将创建相同的层次结构,创建和绑定与您的消息类层次结构一样多的交换。

票数 1
EN

Stack Overflow用户

发布于 2020-04-08 21:05:55

您可以通过下面的代码使用HareDu 2来实现这一点。这适用于Autofac和.NET核心DI。请在此处查看文档:https://github.com/ahives/HareDu2

代码语言:javascript
复制
// Create a queue
var result = _container.Resolve<IBrokerObjectFactory>()
                .Object<Queue>()
                .Create(x =>
                {
                    x.Queue("fake_queue");
                    x.Configure(c =>
                    {
                        c.IsDurable();
                        c.AutoDeleteWhenNotInUse();
                        c.HasArguments(arg =>
                        {
                            arg.SetQueueExpiration(1000);
                            arg.SetPerQueuedMessageExpiration(2000);
                        });
                    });
                    x.Targeting(t =>
                    {
                        t.VirtualHost("fake_vhost");
                        t.Node("fake_node");
                    });
                });


// Create an exchange
var result = _container.Resolve<IBrokerObjectFactory>()
                .Object<Exchange>()
                .Create(x =>
                {
                    x.Exchange("fake_exchange");
                    x.Configure(c =>
                    {
                        c.IsDurable();
                        c.IsForInternalUse();
                        c.HasRoutingType(ExchangeRoutingType.Fanout);
                        c.HasArguments(arg =>
                        {
                            arg.Set("fake_arg", "fake_arg_value");
                        });
                    });
                    x.Targeting(t => t.VirtualHost("fake_vhost"));
                });

// Create a binding
var result = _container.Resolve<IBrokerObjectFactory>()
                .Object<Binding>()
                .Create(x =>
                {
                    x.Binding(b =>
                    {
                        b.Source("fake_exchange");
                        b.Destination("fake_queue");
                        b.Type(BindingType.Exchange);
                    });
                    x.Configure(c =>
                    {
                        c.HasRoutingKey("your_routing_key");
                        c.HasArguments(arg =>
                        {
                            arg.Set("your_arg", "your_arg_value");
                        });
                    });
                    x.Targeting(t => t.VirtualHost("fake_vhost"));
                });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41300430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档