Nodejs 写一个微服务,但不需要 request & response
Nodejs 写一个微服务,但不需要 request & response
有个小问题问下各位大神
我有一个小服务,逻辑是这样的
1:每隔一分钟,读一次数据表,查询有没有新的记录
2:有新的记录,取到数据,调用 第三方 微博 API,通过 HTTP 请求将记录 发送到微博
3:发送成功后,标记数据库记录 发送 成功或者失败
通过 NODE.JS 写这样一个后台服务,启动它,一直运行
我的问题是,这种服务应该使用什么框架 如 express , 或者说不需要框架
因为不需要 route 来请求启动这样的服务,而是直接在 命令行启动就行。
没有思路,新手求指导
不需要 『 Web 框架』
只需要写好程序,然后使用 PM2 Systemd 之类的工具维护就好。
express 的核心功能就是 route+middleware,你这两个都不需要,所以不需要用 express 。
用 request 这个库,或者原生的 httpAPI
楼主是说,程序运行一次,就结束了吧。脚本不难,一直运行 可能卡主了。
你这不用第三方的 web 框架。
原生的 http 模块发送请求就可以了。
你需要:
1. 一个数据库 orm,比如 sequelize,mongoose
2. 一个定时任务库, 比如 node-schedule,node-corn
3. 一个 http 请求库,比如 request,axios
只需要一个 setInterval
定时可以用 crontab,连 pm2 都省了,
写一个脚本然后让 crontab 调用就行了
为啥不试试阿里云的函数计算?
一个 setInterval 就完事了
你需要的是任务调度工具
直接写个 serverless 的应用就行了, 阿里和腾讯这种应该都有, 直接写逻辑. 调用方式有定时调用, API 网关等等, 你这个定时器估计就行了
当然,可以使用Node.js创建一个微服务而不涉及HTTP请求和响应。一个常见的方法是使用消息队列系统(如RabbitMQ)来实现微服务间的通信。下面是一个使用amqplib
库与RabbitMQ交互的简单示例。
首先,确保你安装了amqplib
库:
npm install amqplib
然后,创建一个简单的Node.js脚本来发送和接收消息:
发送消息(producer.js)
const amqp = require('amqplib/callback_api');
amqp.connect('amqp://localhost', (error0, connection) => {
if (error0) {
throw error0;
}
connection.createChannel((error1, channel) => {
if (error1) {
throw error1;
}
const msg = 'Hello World!';
channel.sendToQueue('hello', Buffer.from(msg));
console.log(" [x] Sent '%s'", msg);
setTimeout(() => {
connection.close();
process.exit(0);
}, 500);
});
});
接收消息(consumer.js)
const amqp = require('amqplib/callback_api');
amqp.connect('amqp://localhost', (error0, connection) => {
if (error0) {
throw error0;
}
connection.createChannel((error1, channel) => {
if (error1) {
throw error1;
}
channel.assertQueue('hello', { durable: false });
channel.consume('hello', (msg) => {
console.log(" [x] Received %s", msg.content.toString());
channel.ack(msg);
}, { noAck: false });
});
});
这个示例展示了如何使用RabbitMQ创建一个简单的消息发布/订阅系统,从而实现微服务间的异步通信。