NodeJS + Azure 서비스 버스 + Windows 서비스
이는 클라우드 + 온프레미스 하이브리드 환경이 있고 온프레미스에서 수행해야 하는 일종의 작업을 조율하려는 상황에서 유용할 수 있습니다.
이것이 유일한 사용 사례는 아니지만 자습서로 유용할 만큼 간단하고 일반적입니다.
Azure에서 Service Bus 리소스를 만드는 방법, 대기열을 구성하는 방법 및 대기열을 사용할 수 있는 작은 nodejs Windows 서비스를 만드는 방법을 알아봅니다.
설정
Azure 구독과 리소스 그룹이 이미 있다고 가정합니다.
그렇지 않은 경우 Azure Free Tier을 사용할 수 있습니다.
리소스 그룹에서 새 리소스를 만듭니다. 이 경우 Service Bus를 검색해야 합니다.
필수 필드를 채우십시오. 저와 기본 가격 책정 계층에 더 가깝기 때문에 서유럽 위치를 선택했습니다.
대기열 또는 둘 다 대신 주제를 사용하려는 경우 주제 및 구독 기능이 기본 계획에서 지원되지 않으므로 최소한 표준 가격 책정 계층을 선택해야 합니다.
이 경우 다른 모든 옵션을 기본값으로 두고 리소스 생성을 계속할 수 있습니다.
대기열 만들기
서비스 버스를 가동하고 실행하면 첫 번째 대기열을 만들 수 있습니다.
새로 만든 Service Bus 리소스의 개요 페이지로 이동하여 "대기열 만들기"를 클릭하기만 하면 됩니다.
채울 옵션이 많지 않습니다. "test-queue"라는 이름을 사용하고 모든 기본값을 그대로 두었습니다.
대기열 이벤트 사용
이제 OS 이벤트 로그에서 Service Bus 큐 이벤트 종료 로그를 수신 대기하는 Windows 서비스로 설치된 작은 nodejs 스크립트를 개발할 수 있습니다.
Windows 서비스를 생성하기 위해 서비스 버스 및 node-windows 패키지와 상호 작용하기 위해 공식 nodejs 라이브러리를 사용할 것입니다.
프로젝트 설정
파일 시스템에 "service-bus-daemon"이라는 새 폴더를 만듭니다.
명령으로 노드 프로젝트 초기화
npm init -y
종속성 설치
npm install @azure/service-bus [email protected].6
우리는 node-windows의 1.0.0-beta.6 버전을 설치할 것입니다. 최신 버전 1.0.0-beta.7이 bug that affect the service start을 작성하는 시점에 있기 때문입니다.
서비스 개발
프로젝트의 루트 폴더에 3개의 파일을 만듭니다.
이제 OS 이벤트 로그에서 Service Bus 큐 이벤트 종료 로그를 수신 대기하는 Windows 서비스로 설치된 작은 nodejs 스크립트를 개발할 수 있습니다.
Windows 서비스를 생성하기 위해 서비스 버스 및 node-windows 패키지와 상호 작용하기 위해 공식 nodejs 라이브러리를 사용할 것입니다.
프로젝트 설정
파일 시스템에 "service-bus-daemon"이라는 새 폴더를 만듭니다.
명령으로 노드 프로젝트 초기화
npm init -y
종속성 설치
npm install @azure/service-bus [email protected].6
우리는 node-windows의 1.0.0-beta.6 버전을 설치할 것입니다. 최신 버전 1.0.0-beta.7이 bug that affect the service start을 작성하는 시점에 있기 때문입니다.
서비스 개발
프로젝트의 루트 폴더에 3개의 파일을 만듭니다.
index.js는 비즈니스 논리를 추가할 수 있는 기본 파일입니다
install.js가 시스템에 스크립트를 서비스로 설치합니다
uninstall.js는 이전에 만든 서비스를 제거합니다.
// file index.js
const { ServiceBusClient } = require("@azure/service-bus");
const EventLogger = require('node-windows').EventLogger;
require('dotenv').config();
const SERVICE_NAME = process.env.SERVICE_NAME;
const QUEUE_NAME = process.env.QUEUE_NAME;
const CONNECTION_STRING = process.env.CONNECTION_STRING;
// log directly in the Windows Event Log
log = new EventLogger(SERVICE_NAME);
const queueName = QUEUE_NAME
const sbClient = new ServiceBusClient(CONNECTION_STRING);
const receiver = sbClient.createReceiver(queueName);
async function main(receiver) {
const myMessageHandler = async (messageReceived) => {
log.info(`Received message: ${messageReceived.body}`);
};
// function to handle any errors
const myErrorHandler = async (error) => {
log.error(error);
};
receiver.subscribe({
processMessage: myMessageHandler,
processError: myErrorHandler
});
}
async function closeAll(receiver, sbClient) {
await receiver.close();
await sbClient.close();
process.exit(0);
}
main(receiver).catch((err) => {
log.error(err);
process.exit(1);
});
process.on('SIGTERM', () => {
log.info('Process terminated SIGTERM');
closeAll(receiver, sbClient);
});
process.on('SIGINT', () => {
log.info('Process terminated SIGINT');
closeAll(receiver, sbClient);
});
process.on('SIGKILL', () => {
log.info('Process terminated SIGKILL');
closeAll(receiver, sbClient);
});
// file install.js
require('dotenv').config();
const SERVICE_NAME = process.env.SERVICE_NAME;
var Service = require('node-windows').Service;
// Create a new service object
var svc = new Service({
name: SERVICE_NAME,
description: 'React to service bus queue messages',
script: require('path').join(__dirname,'index.js'),
});
// Listen for the "install" event, which indicates the
// process is available as a service.
svc.on('install',function(){
// start the process
svc.start();
});
svc.install();
// file uninstall.js
require('dotenv').config();
const SERVICE_NAME = process.env.SERVICE_NAME;
var Service = require('node-windows').Service;
// Create a new service object
var svc = new Service({
name: SERVICE_NAME,
script: require('path').join(__dirname,'index.js')
});
// Listen for the "uninstall" event so we know when it's done.
svc.on('uninstall',function(){
console.log('Uninstall complete.');
console.log('The service exists: ',svc.exists);
});
// Uninstall the service.
svc.uninstall();
서비스 설치 및 테스트
서비스를 설치하려면 다음을 실행해야 합니다.
node install.js
node-windows는 스크립트의 .exe 래퍼를 생성하고 서비스를 생성합니다.
다음과 같이 저장 탐색기를 사용하여 Azure Portal에서 직접 큐에 메시지를 생성하여 테스트할 수 있습니다.
서비스를 제거하려면 다음을 실행하면 됩니다.
node uninstall.js
결론
이 자습서에서는 노드 js 및 Azure Service Bus를 사용하여 Windows 서비스를 만들기 위한 시작점으로 유용할 수 있는 작은 스크립트를 만들었습니다.
Reference
이 문제에 관하여(NodeJS + Azure 서비스 버스 + Windows 서비스), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/pul/nodejs-azure-service-bus-windows-service-5262
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
node install.js
node uninstall.js
이 자습서에서는 노드 js 및 Azure Service Bus를 사용하여 Windows 서비스를 만들기 위한 시작점으로 유용할 수 있는 작은 스크립트를 만들었습니다.
Reference
이 문제에 관하여(NodeJS + Azure 서비스 버스 + Windows 서비스), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/pul/nodejs-azure-service-bus-windows-service-5262텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)