【发布时间】:2020-04-26 07:28:39
【问题描述】:
我使用 RabbitMQ、SocketIO 和 MongoDB 为我的应用程序制作私人消息。 计划是当新用户注册时,应用程序为该用户创建新的唯一 RabbitMQ 队列,该用户能够在离线时获取消息。因此,用户通过 SocketIO 发送消息并将其传递给 RabbitMQ Publisher,然后当消费者在线时,他会收到该消息。 我现在的问题是如何从 sendToQueue(发布者)函数中设置验证用户 ID,以便以后能够从消费函数中读取发件人 ID?
amqp.connect(CONN_URL, function(err, conn) {
conn.createChannel(function(err, channel) {
ch = channel;
console.log("RabbitMQ channel created...");
});
});
const publishToQueue = async (queueName, data) => {
ch.sendToQueue(queueName, Buffer.from(data.message));
};
const consumeToQueue = async queueName => {
ch.consume(
queueName,
function(msg) {
return msg.content.toString();
},
{ noAck: true }
);
};
【问题讨论】:
-
您可以将userid保留在消息的标头中,这可以在发布者端完成,当最终消费者拿起消息时,可以从标头中读回userid。跨度>
-
@SoumenMukherjee 谢谢,我在某些网站上看到的添加标题的代码是什么
标签: javascript node.js socket.io rabbitmq amqp