Couchbase Eventing Service 예제

Posted by b모노리스d
2019. 1. 28. 11:49 IT/NoSQL
반응형
Eventing 서비스의 예제

Eventing Service는 Couchbase Server 5.5 부터 사용할 수 있는 새로운 기능입니다.

이번 게시글은 이벤트 기능에 대한 예제를 소개하는 게시글 입니다.

VIP고객에게 보다 신속하게 서비스를 제공하고자 합니다관리자는 한 명 이상의 VIP에게 할당됩니다. VIP가 야구장에 입장하면 문자 메시지가관리자에게로 전송됩니다관리자는 그 자리에서 VIP를만날 수 있습니다.

함수 (Eventing의 일부)를 사용하여 텍스트 메시지를 보내는 예제를만들었습니다Twilio  평가판 계정을 사용 하여 메시지를 보냅니다.  Twilio를 사용하여 시작하는 것은 무료이며 쉽습니다. 그래서 이벤트 기능을 알리기 위해서 예제로 사용하기로 결정했습니다. HTTP API가있는 한 원하는 메시징 / 알림 서비스 (대신)를 사용할 수 있습니다.

참고 : 컬 구성은 아직 개발 중입니다. 이 기능은 개발 목적으로 만 사용되며 프로덕션 환경에서는 사용하지 않아야 합니다.


티켓 검색


첫 번째 단계는 게이트에서 고객의 티켓을 스캔하는 것입니다나는 이것을 시뮬레이션 하는 프로그램을 썼다. Couchbase "티켓"버켓에 임의의 "ticketscan"문서가 생성됩니다.


티켓을 검색하기 전에 몇 가지 데이터를 Bucket에 미리 채워야 했습니다.

고객 1 ~ 9 VIP이고 그 외의 고객은 기타고객 이라고 결정했습니다.

1
2
3
4
5
6
7
8
9
_bucket.Upsert("customer::1", new { Name = "George Clooney" });
_bucket.Upsert("customer::2", new { Name = "Josh Hutcherson" });
_bucket.Upsert("customer::3", new { Name = "Darius Rucker" });
_bucket.Upsert("customer::4", new { Name = "Brooklyn Decker" });
_bucket.Upsert("customer::5", new { Name = "Eddie Vedder" });
_bucket.Upsert("customer::6", new { Name = "Nick Lachey" });
_bucket.Upsert("customer::7", new { Name = "Nick Goepper" });
_bucket.Upsert("customer::8", new { Name = "Johnny Bench" });
_bucket.Upsert("customer::9", new { Name = "Ryan Collins" });

또한 3명의 관리자를 만들었으며 그들에게 각각 3명의 VIP를 할당했습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
_bucket.Upsert("concierge::1", new
{
    Name = "Matt Groves",
    CellNumber = _yourVerifiedNumber,
    vips = new List<string> { "customer::1", "customer::2", "customer::9" }
});
_bucket.Upsert("concierge::2", new
{
    Name = "Mr. Redlegs",
    CellNumber = _yourVerifiedNumber,
    vips = new List<string> { "customer::3", "customer::4", "customer::5" }
});
_bucket.Upsert("concierge::3", new
{
    Name = "Rosie Red",
    CellNumber = _yourVerifiedNumber,
    vips = new List<string> { "customer::6", "customer::7", "customer::8" }
});

위의 예에서 고객 1, 2, 9 "Matt Groves"에게 지정합니다. 이것은 George Clooney, JoshHutcherson

Ryan Collins관리자 Matt Groves가 관리하는 VIP 인 것을 의미합니다. _yourVerifiedNumberTwilio로 확인한

전화 번호로 대체 하십시오.

또한 Twilio 자격 증명을 문서에 저장하고 있습니다. Couchbase Function 내부에 자격 증명이 필요하기 때문에 이

작업을 수행 함으로써 하드 코딩하지 않으려고 했습니다. 자격 증명 문서는 다음과 같습니다.

1
2
3
4
5
6
{
  "url": "https://api.twilio.com/2010-04-01/Accounts/< twilio user name here >/Messages.json",
  "username": "< twilio user name here >",
  "password": "< twilio password name here >",
  "fromNumber": "< twilio 'from' number here >"
}


새로운 "ticketscan"문서를 만들 콘솔 앱을 만들었습니다. 
실행하면 VIP 스캔 또는 기타 고객 스캔을 만들도록 선택할 수 있습니다.
1
2
3
4
Console.WriteLine("1 - Simulate a VIP ticket scan.");
Console.WriteLine("2 - Simulate a regular joe ticket scan.");
Console.WriteLine("Q - End simulation.");
var choice = Console.ReadKey().KeyChar;


ticketscan 문서에는 고객 문서의 ID, 타임 스탬프 및 시트 번호의 세 가지 필드 만 포함됩니다.
1
_bucket.Upsert(ticketScanId, new {CustomerId = customerId, Timestamp = ticketScanTimestamp,
Seat = seatInformation });
Github 에서 전체 소스 코드를 찾을 수 있습니다 .


이벤트 함수

이 글의 핵심은 함수입니다. 이 함수를 만들 때 "notifyConcierge"라고 했습니다. "tickets_metadata" Bucket을 사용했습니다 (아래 그림 참조). 가장 중요한 것은 "tickets" Bucket의 별칭을 만들고 이를 "src"라고 했습니다. 함수 내에서 이 Bucket은 읽기 전용이지만 Twilio 자격 증명뿐만 아니라 고객 및 관리자 정보를 얻기 위해 필요합니다.

전체 기능에 Github에서 볼 수 있습니다. 다음은 함수의 분류입니다.

1 - 돌연변이 된 문서가 ticketcan 있습니까? 그럴 경우 계속하십시오. 그렇지 않은 경우 이 함수는 이를 무시할 수 있습니다.

2 - 스캔 한 티켓의 고객이 VIP입니까? 그렇다면 관리자세부 정보를 받아 계속 진행하십시오. 그렇지 않으면 무시하십시오. 함수의 이 부분에서 인라인 N1QL을 확인하십시오. 이것은 Couchbase 기능에 사용되는 JavaScript의 고유 한 기능입니다.

3 - VIP의 세부 정보를 가져옵니다.

4 - Twilio 자격 증명을 가져옵니다.

5 - 메시지를 구성하십시오 (VIP 이름, 좌석 번호 및 관리자이름 포함). dataTwilio의 API를 사용하는 데 필요한 최소값입니다.

6 - Twilio API를 사용하여 관리자에게 문자 메시지 보내기. curl 구성은 여전히 ​​개발 중입니다. 이 기능은 개발 목적으로 만 사용되며 프로덕션 환경에서는 사용하지 않아야 합니다.

Eventing 데모 실행

이제 ticketcan 문서가 생성되거나 수정 될 때마다 관리자에 휴대 전화로 알림이 전송됩니다. 다음은 티켓 스캔에서 SMS 알림에 이르는 전체 데모의 예입니다.


이 이미지에서 4 장의 티켓 스캔을 만듭니다. 첫 번째는 VIP 용이고, 다음 두 개는 기타 그룹 용이며, 마지막은 VIP 용입니다. 두 개의 문자 메시지가 나타납니다. 실제로 이것은 다른 전화기에 표시되지만 모든 알림을 하나의 번호로 보내 테스트합니다. 참고 : join.me  사용하여 내 안드로이드 화면을 콘솔과 나란히 표시합니다.

어떤 문제가 발생하면 좋은 소식은 Couchbase의 함수에서 디버깅이 가능하다는 것입니다. 자바 스크립트에서 중단 점을 설정하고 Chrome과 같은 도구를 사용하여 단계별로 실행할 수 있습니다. 그것에 대한 더 자세한 내용은 Eventing 공지 사항을 확인하십시오.


출처 :Matthew Groves, 2018년 8월 6일, https://blog.couchbase.com/eventing-notification-couchbase-functions/



반응형

'IT > NoSQL' 카테고리의 다른 글

XDCR(Cross Datacenter Replication) 이해 – Part 1  (0) 2019.01.31
$(document).ready(function(){ var tmpLogin = document.getElementsByClassName("tt_menubar_logout")[0].getElementsByTagName("a")[0]; tmpLogin.className = ""; tmpLogin.innerHTML = tmpLogin.innerHTML.replace("로그아웃",' Logout'); tmpLogin.innerHTML = tmpLogin.innerHTML.replace("로그인",' Login'); document.getElementById("loginout_append").innerHTML = tmpLogin.outerHTML; });