2017-10-16 1 views
0

우리는 애플리케이션에서 일부 처리를 오프로드하여 더 많은 사용자 경험을 제공하면서도 과중한 작업을 수행하면서 Azure 서비스 버스 대기열을 발견 할 수있는 위치에 있습니다. .Azure 기능을 사용하는 Azure 서비스 버스 대기열 메시지 처리

데이터를 대기열에 넣는 방법과 메시지 대기열의 기본 아이디어를 이해합니다. 그러나 이해해야하는 것은 그들이 들어올 때 어떻게 처리해야하는지입니다. 단지 그것에 대해 생각할 때 어떤 방법이 있어야하는 것처럼 들립니다. 메시지가 들어올 때마다 수신 대기하는 Azure 기능을 구현하지만 계속 폴링하지 않고 어떻게 처리합니까? OnMessage를 사용하여 대기열에 가입 할 수 있다고 생각하지만 Azure 기능과 함께 작동하는 방법은 무엇입니까?

현재 우리가 이런 일을하고있는 예를 들어

,

var client = QueueClient.CreateFromConnectionString(connectionString, queueName); 

BrokeredMessage message = new BrokeredMessage(); 

while ((message = client.Receive(new TimeSpan(hours: 0, minutes: 0, seconds: 30))) != null) 
{ 
    Console.WriteLine(string.Format("Message received: {0}, {1}, {2}", message.SequenceNumber, message.Label, message.MessageId)); 
    message.Complete(); 

    Console.WriteLine("Processing message (sleeping...)"); 
    Thread.Sleep(1000); 
} 

Console.WriteLine("Finished listening Press ENTER to exit program"); 
Console.ReadLine(); 

그러나

이 경우에 우리는 바로 폴링을 시뮬레이션하는? 이것은 단지 좋은 해결책으로 느껴지지 않습니다. 내 디자인에서이 잘못 생각하고 있니?

답변

2

Azure ServiceBus는 클라이언트가 대기열을 폴링하는 대신 연결된 클라이언트에 새 메시지를 전송함으로써 작동합니다.

ServiceBus API를 사용하면 OnMessage 메서드를 사용하여 메시지 펌프를 설정할 수 있지만 Azure 함수를 사용하는 경우에는 서비스 버스 트리거를 사용하여 수행됩니다.

청취하고 싶은 대기열을 가리 키도록 Azure 기능을 구성하기 만하면됩니다. 새 메시지가 큐에 추가되면 함수가 트리거되고 메시지가 전달됩니다.

는 서비스 버스 트리거의 예를 살펴 :

https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-service-bus#trigger-sample

+2

작은 보정 - 브로커가 클라이언트에 푸시 메시지를하지 않습니다. Azure 서비스 버스 클라이언트에는 메시지를 폴링하는 별도의 스레드에서 실행중인 메시지 펌프가 있습니다. –

+0

고마워요.이게 내가 찾고있는 것 같지만이 방법을 사용하는 정확한 방법론을 찾을 수 없었습니다. – tokyo0709

관련 문제