我使用RabbitMQ,SocketIO和MongoDB为我的应用创建私人消息。计划是当新用户注册时,应用为该用户创建新的唯一RabbitMQ队列,使该用户能够在脱机时获取消息。因此,用户通过SocketIO发送消息,并将消息传递给RabbitMQ Publisher,然后当消费者在线时,他会收到该消息。现在我的问题是如何设置来自sendToQueue(Publisher)函数的验证用户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 }
);
};
我锻炼了...
const publishToQueue = async (queueName, data) => {
let properties = { headers: {userId: data.to }, timestamp: Date.now() };
ch.sendToQueue(queueName, Buffer.from(data.message), properties);
};
这将发送带有userId信息和消息时间戳的标头