PubNub:将所有已发布消息记录到我的数据库的正确方法是什么

PubNub: What is the right way to log all published message to my db

记录每条发布的消息并将其保存到我的服务器数据库的正确方法是什么。

我能想到的有两个方案:

  1. 使用 PubNub 功能发布事件后并将消息转发到专用记录器通道。服务器将订阅频道并将到达的消息保存到数据库。 这里又提出一个问题:在PubNub功能中转发消息到另一个频道时是否也会触发PubNub功能?
  2. 使用 PubNub XHR request/response 函数并使用发布的消息在我的服务器上调用 rest API 并将其保存到 db

关于性能和成本的最佳实践是什么?

将 PubNub 消息保存到您的私人数据库

我们写了一篇文章,讨论 right way to log JSON Messages to a Private Database

While many approaches exist. One is best. Using PubNub Functions. You will asynchronously save messages reliably to your Database. Using an OnAfter Publish Event. Your database needs to be accessible via a secured HTTPS endpoint.

PubNub 不会使用 FTS Indexing; at time of writing. You may want Full Text Search Indexing using your database or use an API provider like https://www.algolia.com/ 为您的消息编制索引以进行全文搜索。

数据很有价值。 AI 和 ML 允许您使用 Tensorflow. You may want to run data analysis for the message content. Using EMR / Hadoop 或其他大数据分析软件从数据中获得洞察力。

您将使用 PubNub Functions 按照以下步骤轻松地将消息异步保存到数据库系统中。

入门很容易。假设您已经将消息流发布到 PubNub 数据通道。遵循这些简单的步骤。您将成功地创建一个 realtime 函数,每个 Publish 事件都会触发该函数。

  1. 收集频道列表。您可能对 ALL 个频道感兴趣 *.
  2. 在您的Account Dashboard中找到您的应用程序,然后单击功能
  3. 为指定的 API 键集创建一个新模块。
  4. * 频道上创建一个新的 OnAfter 事件处理程序。
  5. 使用以下示例代码将消息异步保存到数据库。
  6. 确保修改 URL/Parameters 以满足您的需要。

异步HTTPS保存消息功能

// Request Handler
export default request => { 
    return save(request).then( () => request.ok() );
}

// Async Logging/Save of JSON Messages
function save( data, retry=3 ) {
    const xhr  = require('xhr');
    const post = { method : "POST", body : request.message };
    const url  = "https://my.company.com/save"; // <-- CHANGE URL HERE

    // save message asynchronously
    return xhr.fetch( url, post ).then( serverResponse => {
        // Save Success! 
    }).catch( err => {
        // Retry
        if (retry > 0) save( data, --retry );
    });
}