2016-10-27 2 views
1

기대에 오프셋 : 새 이벤트에오고 EventHubTrigger-CSHARP 템플릿 실행과 기능의 응용 프로그램을 사용 푸른 EventHubTrigger 기능 앱

구현 :. https://azure.microsoft.com/en-us/documentation/articles/functions-bindings-event-hubs/

에서 아주 기본적인 예제를 사용하여

결과 : , 설명 된 방법

public static void Run(string myEventHubMessage, TraceWriter log) 
{ 
    log.Info($"C# Event Hub trigger function processed a message: {myEventHubMessage}"); 
} 
,

은 현재 대기열 대신 이벤트 대기열에서 '첫 번째'를 전달합니다.

추가 : - 내가 (그래서 $ 기본에서 읽기되지 않음) consumerGroup 추가 -이 블로그에 따르면 http://www.yourcloudbuddy.com/2016/04/azure-functions-and-event-hubs.html '특정 오프셋을 시작하도록 구성 할 수있는 방법은 현재 없다'.

질문 : 기능 앱의 허브에서 최신 이벤트를 수신하려면 어떻게해야합니까?

더 많은 정보 : 이벤트 허브의 새로운 신호를 외부 mqtt API (앞으로 작동 함)로 전달해야합니다. 아마 또 다른 접근이 필요 하겠지? 모든 입력

고맙습니다, 라민

답변

2

@Ramin에 기능 요청을 파일에 오신 것을 환영합니다 https://github.com/Azure/azure-webjobs-sdk/wiki/EventHub-support

을, 나는 당신과 비슷한 시나리오를 다시 시도했지만를 repro 수 없습니다 발행물.

  1. 설정 이벤트 허브 트리거 기능 (10)를 보냅니다 내 이벤트 허브에

  2. 설정하는 간단한 콘솔 응용 프로그램 보낸 사람을 (2016년 10월 27일 현재의 최신 버전 0.7을 사용) : 다음 단계입니다 타임 스탬프 및 메시지 ID가있는 메시지 각 메시지는에서 12 분 간격으로 으로 전송됩니다. 여기에 당신이 모든을 볼 수 있듯이 전송 된 메시지를 기록 내 콘솔 응용 프로그램에 대한 출력,

    Sent message: Timestamp: 10/27/2016 2:27:06 PM, MessageId: 1 
    Sent message: Timestamp: 10/27/2016 2:33:07 PM, MessageId: 2 
    Sent message: Timestamp: 10/27/2016 2:39:07 PM, MessageId: 3 
    Sent message: Timestamp: 10/27/2016 2:45:07 PM, MessageId: 4 
    Sent message: Timestamp: 10/27/2016 2:51:08 PM, MessageId: 5 
    Sent message: Timestamp: 10/27/2016 2:57:08 PM, MessageId: 6 
    Sent message: Timestamp: 10/27/2016 3:03:08 PM, MessageId: 7 
    Sent message: Timestamp: 10/27/2016 3:09:08 PM, MessageId: 8 
    Sent message: Timestamp: 10/27/2016 3:15:08 PM, MessageId: 9 
    Sent message: Timestamp: 10/27/2016 3:21:08 PM, MessageId: 10 
    Stopped sending messages. 
    
    여기

    내 기능에 대한 로그 항목이

,

2016-10-27T21:27:26.516 Function started (Id=d5ed0e23-2b0e-4e0b-a858-f1e497dcac8c) 
2016-10-27T21:27:26.516 C# Event Hub trigger function processed a message: Timestamp: 10/27/2016 2:27:06 PM, MessageId: 1 
2016-10-27T21:27:26.516 Function completed (Success, Id=d5ed0e23-2b0e-4e0b-a858-f1e497dcac8c) 
2016-10-27T21:33:26.667 Function started (Id=9525a046-86fb-4499-9d4f-b0d0fd0d0829) 
2016-10-27T21:33:26.667 C# Event Hub trigger function processed a message: Timestamp: 10/27/2016 2:33:07 PM, MessageId: 2 
2016-10-27T21:33:26.667 Function completed (Success, Id=9525a046-86fb-4499-9d4f-b0d0fd0d0829) 
2016-10-27T21:39:42.074 Function started (Id=e2d528c9-f1b9-41aa-9c38-669c57c8182a) 
2016-10-27T21:39:42.074 C# Event Hub trigger function processed a message: Timestamp: 10/27/2016 2:39:07 PM, MessageId: 3 
2016-10-27T21:39:42.074 Function completed (Success, Id=e2d528c9-f1b9-41aa-9c38-669c57c8182a) 
2016-10-27T21:45:26.794 Function started (Id=ff5325af-5dab-48fb-95b1-8318fada3c8c) 
2016-10-27T21:45:26.794 C# Event Hub trigger function processed a message: Timestamp: 10/27/2016 2:45:07 PM, MessageId: 4 
2016-10-27T21:45:26.794 Function completed (Success, Id=ff5325af-5dab-48fb-95b1-8318fada3c8c) 
2016-10-27T21:51:26.875 Function started (Id=01d3fbf9-b772-4076-8fbf-783dc16677a7) 
2016-10-27T21:51:26.875 C# Event Hub trigger function processed a message: Timestamp: 10/27/2016 2:51:08 PM, MessageId: 5 
2016-10-27T21:51:26.875 Function completed (Success, Id=01d3fbf9-b772-4076-8fbf-783dc16677a7) 
2016-10-27T21:57:26.989 Function started (Id=443d96e6-af97-460a-9f70-9dbc2eaf2f37) 
2016-10-27T21:57:26.989 C# Event Hub trigger function processed a message: Timestamp: 10/27/2016 2:57:08 PM, MessageId: 6 
2016-10-27T21:57:26.989 Function completed (Success, Id=443d96e6-af97-460a-9f70-9dbc2eaf2f37) 
2016-10-27T22:03:27.088 Function started (Id=9eefe03d-8e78-4119-a453-96655ea01824) 
2016-10-27T22:03:27.088 C# Event Hub trigger function processed a message: Timestamp: 10/27/2016 3:03:08 PM, MessageId: 7 
2016-10-27T22:03:27.088 Function completed (Success, Id=9eefe03d-8e78-4119-a453-96655ea01824) 
2016-10-27T22:10:01.872 Function started (Id=34c9b277-059d-4839-9dce-aeb03afb2871) 
2016-10-27T22:10:01.872 C# Event Hub trigger function processed a message: Timestamp: 10/27/2016 3:09:08 PM, MessageId: 8 
2016-10-27T22:10:01.872 Function completed (Success, Id=34c9b277-059d-4839-9dce-aeb03afb2871) 
2016-10-27T22:15:27.706 Function started (Id=50eda659-c68f-4e61-a942-32160668fd5c) 
2016-10-27T22:15:27.706 C# Event Hub trigger function processed a message: Timestamp: 10/27/2016 3:15:08 PM, MessageId: 9 
2016-10-27T22:15:27.706 Function completed (Success, Id=50eda659-c68f-4e61-a942-32160668fd5c) 
2016-10-27T22:21:52.162 Function started (Id=fa8f8059-013f-42f9-8047-391d4e3fb4a3) 
2016-10-27T22:21:52.162 C# Event Hub trigger function processed a message: Timestamp: 10/27/2016 3:21:08 PM, MessageId: 10 
2016-10-27T22:21:52.162 Function completed (Success, Id=fa8f8059-013f-42f9-8047-391d4e3fb4a3) 

입니다 메시지가 중복되지 않고 도착했습니다. 함수를 호출 할 때마다 (기능 로그를 확인할 수 있음) 실제로 성공적으로 완료되었는지 확인할 수 있습니까?그 실행을위한

다음과 같은 메시지가 표시되는 경우

, 함수의 모든 호출을위한

Function completed (Success, Id=<some Guid>) 

, 다음 메시지 (들) 체크 지적되어 있어야합니다, 당신은 (메시지를 처리하지 않아야 s)를 다시 호출합니다.

그러나 메시지가 표시되지 않거나 오류 메시지가 표시되면 기능 실행이 실패하여 메시지가 체크 포인트되지 않습니다. 함수가 다시 트리거되면 함수가 해당 메시지를 처리하지 못하면 메시지 인 메시지 일 수있는 마지막 검사 점에서부터 선택됩니다.

+0

v0.7로 업데이트 한 후 작동했습니다. 나는 동적 인 json 객체 (지금까지는 경고가 없음)에도 문제가 있었기 때문에 함수가 올바르게 완료되지 않았다는 가정하에 당신이 옳았다. 이제는 내 기대에 따라 작동합니다. 자세한 시험 해줘서 고마워, 라민. – Ramin

1

EventHub 듣기는 EventProcessorHost 클래스 (https://msdn.microsoft.com/en-us/library/azure/microsoft.servicebus.messaging.eventprocessorhost.aspx)에 기초하여 그 기본 의미를 갖는다. 맞습니다. 시작 오프셋을 제어 할 수 없습니다. 듣기와 체크 포인트를 시작하기 만하면됩니다.

우리는 또한 위키에 대한 자세한 내용 추적 : 또한있어 https://github.com/Azure/azure-webjobs-sdk/issues/

+0

이 경우 이벤트 허브 트리거 기능 앱의 의미를 이해하지 못합니다. myEventHubMessage에는 정확하게 하나의 이벤트가 포함되어 있기 때문에 '새'이벤트가 수신 될 것으로 예상했습니다 (이 이벤트를 트리거 한 이벤트). 대신 대기열에 '첫 번째'를 포함합니다. – Ramin

+0

FunctionHubTrigger for Function 앱이 예상대로 작동합니다 (내 의견과 함께 링의 답변 참조). – Ramin

+0

@Ramin - 이벤트 허브는 커서를 사용합니다. "최신"이라고 읽지는 않지만 독자의 커서에서 읽습니다. 달리 말하면; 작가가 100 개의 이벤트를 보내고 (아직 독자가 없다면) 독자를 시작하면 독자가 시작되기 전에 보낸 100 개의 이벤트를 선택합니다. –