【问题标题】:RabbitMQ Node JS Validate User IDRabbitMQ 节点 JS 验证用户 ID
【发布时间】: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


【解决方案1】:

我锻炼了……

const publishToQueue = async (queueName, data) => {
  let properties = { headers: {userId: data.to }, timestamp: Date.now() }; 
  ch.sendToQueue(queueName, Buffer.from(data.message), properties);
};

这将发送带有用户 ID 信息的标头以及消息的时间戳

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-17
    • 1970-01-01
    相关资源
    最近更新 更多