2017-05-10 1 views
1

계산 얻을 대기열에서 카운트를 얻기의 오래된 방법은 다음과 같이했다 : 더 이상 내가 좋은를 찾는하고 있지 않다 AMQP 1.0.NetCore 푸른 Servicebus 현재의 메시지가

와 .netCore와 함께 작동이

CloudQueue q = queueClient.GetQueueReference(QUEUE_NAME); 
      q.FetchAttributes(); 
      qCnt = q.ApproximateMessageCount; 

메시지 수를 얻는 방법. 제가 누락 된 것에 대한 아이디어가 있습니까?

+0

이 푸른 서비스를 보이지 않는다 버스 코드 스 니펫이나 저장 대기열. –

+0

물론, ServiceBus의 대기열에있는 항목의 수를 가져 오는 것과 동일한 기능은 무엇입니까? – w2olves

+0

Google "하늘빛 서비스 버스 대기열에 메시지가 있습니다."그리고 말 그대로 첫 번째 결과는 질문에 대한 답변입니다. D http://stackoverflow.com/questions/16254951/determining-how-many-messages-are-on- the-azure-service-bus-queue –

답변

2

미리보기 버전 인 Microsoft.Azure.Management.ServiceBus Libary가 100 % 호환 .Netcore입니다. 우리는 여기 더 detail을 얻을 수 있습니다.

Preparetion :

Registry Azure Active Directory application and assign Role

단계 :

는 .NET 코어 콘솔 프로젝트를 만들고 다음 코드를 추가합니다.

var tenantId = "tenantid"; 
      var context = new AuthenticationContext($"https://login.windows.net/{tenantId}"); 
      var clientId = "Client"; 
      var clientSecret = "Secret"; 
      var subscriptionId = "subscriptionId"; 
      var result = context.AcquireTokenAsync(
       "https://management.core.windows.net/", 
       new ClientCredential(clientId, clientSecret)).Result; 

      var creds = new TokenCredentials(result.AccessToken); 
      var sbClient = new ServiceBusManagementClient(creds) 
      { 
       SubscriptionId = subscriptionId 
      }; 
      var queueParams = new QueueCreateOrUpdateParameters() 
      { 
       Location = "East Asia", 
       EnablePartitioning = true 
      }; 

      var queue = sbClient.Queues.ListAll("groupname", "namespace").ToList().FirstOrDefault(x => x.Name.Equals("queuename")); 
      var messagecount = queue.MessageCount; 
하늘빛 poratal에서

enter image description here

, 우리는 큐에서 메시지를 확인

enter image description here

Project.json 파일 :

{ 
    "version": "1.0.0-*", 
    "buildOptions": { 
    "emitEntryPoint": true 
    }, 

    "dependencies": { 
    "Microsoft.Azure.Management.ServiceBus": "0.2.0-preview", 
    "Microsoft.IdentityModel.Clients.ActiveDirectory": "3.13.9", 
    "Microsoft.NETCore.App": { 
     "type": "platform", 
     "version": "1.0.1" 
    } 
    }, 

    "frameworks": { 
    "netcoreapp1.0": { 
     "imports": "dnxcore50" 
    } 
    } 
} 
+0

위 작업이 이루어졌습니다. 이것에 걸리는 다른 모든 사람들을 위해 groupname은 Resourcegroup 이름이고 NameSpace는 Queue Namespace입니다. – w2olves

+0

다음과 같이 큐에 메시지를 보냅니다. queueClient = new QueueClient (ServiceBusConnectionString, QueueName, ReceiveMode.PeekLock); // 새 중개 메시지를 작성하여 큐로 보내십시오. var message = new Message ($ "Message {precheckMessage}"); // 메시지를 큐에 보냅니다. await queueClient.SendAsync (message); 메시지를 누를 때 QueueID를 쉽게 얻을 수 있습니까? 문맥처럼? – w2olves

+0

위 코드를 사용하면 queueid를 쉽게 얻을 수 있습니다. var queue = sbClient.Queues.ListAll ("groupname", "namespace") .ToList(). FirstOrDefault (x => x.Name.Equals ("queuename")) ;''var id = queue.id' 그러면 **/subscriptions/subscriptionId/resourceGroups/resource groupname/providers/Microsoft.ServiceBus/namespaces/servicebusname/queues/queuename **과 같은 큐 ID를 얻을 수 있습니다. –

관련 문제