Tag: azure servicebus topics

操作未在分配的00:01:00超时内完成

我正在使用代码片段将消息发送到服务总线主题。 try { // sb is instance of ServiceBusConfig.GetServiceBusForChannel await sb.SendAsync(message); } catch (Exception ex) { this.logger.LogError( “chanel”, “An error occurred while sending a notification: ” + ex.Message, ex); throw; } 和实施是 public async Task SendAsync(BrokeredMessage message) { if (this.topicClient == null) { this.topicClient = TopicClient.CreateFromConnectionString(this.primaryConnectionString, this.topicPath); this.topicClient.RetryPolicy = this.retryPolicy; } await this.topicClient.SendAsync(message); } 错误:- […]

Azure Service Bus消息泵是否真的是事件驱动的?

所以我们最近一直在研究Azure Service Bus,我们对是否应该使用无限循环轮询队列/订阅或者是否应该使用OnMessage回调/消息泵function感到困惑。 什么会执行更少的操作,从而降低成本? 理想情况下,我们需要一个事件驱动的系统,因此我们不会浪费操作,而且通常只是一种更好的方法。 我的问题是,使用OnMessage定义为“在事件驱动的消息泵中处理消息”真的是事件驱动的吗? 如果你看看这个页面(QueueClient.OnMessage): https ://msdn.microsoft.com/library/azure/microsoft.servicebus.messaging.queueclient.onmessage.aspx你会注意到底部的评论它基本上是一个无限循环的包装器,它调用Receive()方法。 这对我来说听起来不是事件驱动的。 现在,如果您查看此页面(SubscriptionClient.OnMessage): https : //msdn.microsoft.com/en-us/library/azure/dn130336.aspx ,该注释不存在。 那么主题/订阅和队列是一样的,还是它实际上是订阅的事件驱动而不是队列? 为什么他们甚至说这是事件驱动的,显然不是? QueueClient.OnMessage页面上的注释具有“无限循环”和“每个接收操作是可计费事件”这一事实有点可怕。 而且,我并不是真的担心它会花多少钱/多少钱,我更感兴趣的是让它尽可能高效。

当您尝试取消已排队的计划Azure服务总线消息时会发生什么?

我正在尝试为Azure服务总线队列或主题安排消息的最佳方法,同时保持选项打开以立即发送消息而不是预定消息。 我想确保如果我尝试在第一条消息的预定时间或之后发送替换消息,我可以保护自己不会创建重复消息。 如果我在消息已经入队后尝试使用CancelScheduledMessageAsync(对于QueueClient和TopicClient类)取消已调度的消息,会发生什么? 它会抛出exception吗?