AutoDeleteOnIdle을 설정할 때 올바른 동작을 파악하려고합니다. MyGameMessages라는 주제가 있습니다 (광고로 간주 될 수 있기 때문에 게임 이름을 공개하지 않음).Azure Servicebus AutoDeleteOnIdle
내가하는 일은 내 서버 팜의 각 노드에서 구독을 만드는 것입니다.
첫 번째 구현 :
var manager = GetNameSpaceManager();
_subscriptionId = Guid.NewGuid().ToString();
var description = new SubscriptionDescription(topic, _subscriptionId);
description.AutoDeleteOnIdle = TimeSpan.FromHours(1);
manager.CreateSubscription(description);
은 그 때 나는 거의 루프 영원히 (또는 적어도 때까지 종료하라는 지시를 내 렸습니다) 스레드
while(_running)
{
if (_subscriptionId == null)
break;
var message = client.Receive(TimeSpan.FromMinutes(1)); // MARK A
if (message != null)
{
var body = message.GetBody<T>();
// Do stuff with message
message.Complete();
}
}
질문 A를 시작 MARK A.에 시간 초과가 없었습니다. 한 시간 내에이 주제에 메시지가 보내지지 않으면 구독이 자동 응답되었습니다. 이것은 예상되는 행동입니까? 클라이언트는 실제로 죽은 것이 아니라 단지 메시지를 기다리는 것 주위에 앉아 있다고 생각합니다. 살아 있지 않아?
B질문 : 도움이 될
가 MARK A의 같은 시간 제한을 추가하거나 새 구독을 만들 때마다 50 분 (다만 경우에 작은 중복을 만드는) 및 이전을 포기하는 더 나은 솔루션입니다 하나?
감사
요한
30 분마다 주제에 메시지를 보내는 타이머를 추가했습니다. 구독을 유지합니다. 내가 그렇게하지 않으면 삭제 될 것입니다. 올바른 행동을 지적 해 주셔서 감사합니다. 나는 티켓을 팀에 제출할 것이다! 불합리한 승인을 드려 죄송합니다. –