c#-具有Azure Service Bus的MassTransit 3创建队列
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c#-具有Azure Service Bus的MassTransit 3创建队列,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2078字,纯文字阅读大概需要3分钟。
内容图文
我正在将应用程序从使用MT3和RabbitMQ转换为使用Azure Service Bus,MassTransit在Azure中配置队列的方式与对RMQ的配置方式不同,并且文档内容比较淡(here)我想看看是否有人解决了这个问题
我将MT 3.4和Microsoft.ServiceBus 3.0用于TokenProvider,我有一个创建总线的实用程序类(此example之后):
public static IBus CreateBus()
{
var busControl = Bus.Factory.CreateUsingAzureServiceBus(sbc =>
{
var host = sbc.Host(new Uri("sb://<sbname>.servicebus.windows.net/"), h =>
{
h.OperationTimeout = TimeSpan.FromSeconds(5);
h.TokenProvider = TokenProvider.CreateSharedAccessSignatureTokenProvider("<KeyName>", "<Key>");
});
sbc.ReceiveEndpoint(host, "command_queue", ep =>
{
ep.SubscribeMessageTopics = true;
ep.UseRetry(Retry.Incremental(5, TimeSpan.FromSeconds(5), TimeSpan.FromSeconds(5)));
});
});
return busControl;
}
我有一个Web API控制器,它使用总线将命令发布到队列:
[RoutePrefix("customer")]
public class CustomerController : ApiController
{
private readonly IBus _serviceBus;
public CustomerController()
{
_serviceBus = AzureServiceBusUtils.CreateBus();
}
[HttpPost, Route("register")]
public async Task<HttpResponseMessage> Register()
{
var command = JsonConvert.DeserializeObject<RegisterNewCustomerCommand>(Encoding.ASCII.GetString(Request.Content.ReadAsByteArrayAsync().Result));
await _serviceBus.Publish(command);
return Request.CreateResponse(HttpStatusCode.OK);
}
}
RegisterNewCustomerCommand只是一个简单的Name,Address等.C#类:
namespace AZSB.Commands
{
public class RegisterNewCustomerCommand
{
public string Name { get; }
...
public RegisterNewCustomerCommand(...) {...}
}
}
现在,当我通过一条消息发出消息时,会在Azure上创建一个主题(AZSB.Commands / RegisterNewCustomerCommand),但是当我单击Azure内的主题时,它并未链接到command_queue并添加到该主题中门户,详细信息面板只是挂起(因此我无法将其手动配置为手动创建的队列)
我想念什么吗?
阿拉斯泰尔
解决方法:
您需要在接收端点中为该类型添加消息使用方.上面的代码没有使用者,因此没有类型绑定.
class YourConsumer :
IConsumer<RegisterNewCustomerCommand>
{}
cfg.ReceiveEndpoint("your_queue", x =>
{
x.Consumer<YourConsumer>();
});
然后,您将拥有一个接受该消息类型的使用者,这将使MassTransit将主题绑定到队列.
内容总结
以上是互联网集市为您收集整理的c#-具有Azure Service Bus的MassTransit 3创建队列全部内容,希望文章能够帮你解决c#-具有Azure Service Bus的MassTransit 3创建队列所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。