一些特定的ServiceBus问题AutoRenewTimeout,Filtering,DeleteSubscription,PeekAndLockMode

时间:2016-01-18 23:59:19

标签: azure azureservicebus servicebus azure-servicebus-queues azure-servicebus-topics

我有一些与服务总线相关的具体问题,我希望能够获得更多的见解。我已经阅读了很多关于Service Bus(SB)的博客和大量文档,并且实现了一个可以使用它的解决方案。我将要问的问题,如何没有得到回答,或者以不明确的方式得到回答,这就是为什么我想要了解具体细节的原因。所以他们去了:

1)只是希望了解更多关于" OnMessage" ServiceBus队列的功能。根据我的理解,它不是典型的while()/ Receive()循环,具有Sleep()间隔,但事实上更多的是" push"根据文档和我的测试,基于方法。所以我的问题是如果我设置" AutoRenewTimeout"到1分钟,然后在发出新的Receive()操作之前等待接收消息1分钟的线程会发生什么。它是否睡眠&等待来自ServiceBus的消息以获得"推送"对吗?或者更像是一种异步方法,其中一个线程被释放回池中,并且只有当消息到达时再次抓取才能工作,说我设置的1分钟AutoRenewTimeout窗口中有47秒? (不,我不是在谈论" OnMessageAsync"在这里)我想这个问题涉及实施SB的WCF的内部。

2)关于问题1),设置" AutoRenewTimeout"的重要性是什么?到5分钟,或10分钟,或60分钟,除了在这些间隔触发的Receive()操作的明显成本?我想从客户的角度来看,触发接收操作的次数越少,对我来说就越有成本效益,但就等待消息而言,#34;等等。在此期间从服务总线的角度/应用程序的角度来看,什么是推荐的" AutoRenewTimeout" perioud?如果" AutoRenewTimeout" SB更容易丢弃连接。设定为1小时对1分钟?更多的资源/线程用法在" AutoRenewTimeout"更长?在我读过的任何帖子/博客/文档中,我都无法找到任何明确的答案。

3)我在每台服务器上部署了一个主题/订阅应用程序,它们向/从主题发送/接收消息。现在,我不希望每个客户端(服务器)接收它自己发出的消息,我只想接收其他服务器(客户端)发出的消息。我能够使用SqlFilter()实现解决方案,但我想知道是否还有其他/更好的方法吗?在谈到SqlFilters()时,使用简单比较SqlFilter()时,订阅客户端之间的消息传递速度对性能有何影响(如果有)? (我想我可以为自己做基准测试,但我很好奇地看一看内幕)

4)关于消息接收器上的PeekAndLock模式,如果在假设情景中,在SB端收到消息时标记完成,则有人能够在SB端和应用程序VM,那么该消息将永远丢失,因为应用程序将不会收到它,但SB会将其检查为已完成。我的理解是否正确,在PeekAndLock模式下,消息被标记为已完成,而应用程序端无法确保始终接收消息?

5)关于删除某个主题的订阅,可以说其中有100条从未收到过的消息,会算作1次操作,还是101次操作?

感谢您花时间和精力阅读本文。如有必要,我很乐意澄清任何一点。 Abhishek,你似乎是SB的建筑师之一,所以如果你看到这篇文章,我真的很感激你是否会发表一些评论:)

谢谢!

0 个答案:

没有答案