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

时间:2018-02-07 13:26:29

标签: pubnub

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

我可以想到两个选项:

  1. 使用PubNub函数发布事件并将消息转发到专用记录器通道。服务器将订阅该频道并将到达的消息保存到db。 这里提出了另一个问题:当我将消息转发到PubNub函数中的另一个通道时,它还会触发PubNub函数吗?
  2. 使用PubNub XHR请求/响应函数并使用发布的消息调用我服务器上的rest API并将其保存到db
  3. 有关性能和成本的最佳做法是什么?

1 个答案:

答案 0 :(得分:9)

将PubNub消息保存到您的专用数据库

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

  

虽然存在许多方法。一个是最好的。使用PubNub Functions。您将异步将消息可靠地保存到数据库中。使用 OnAfter Publish 事件。您的数据库需要通过安全的HTTPS端点访问。

PubNub不会使用FTS Indexing为您的邮件编制索引;在写作时。您可能希望使用数据库进行全文搜索索引,或使用https://www.algolia.com/等API提供程序进行全文搜索。

数据很有价值。 AI和ML允许您使用Tensorflow从数据中创建洞察力。您可能希望对邮件内容运行数据分析。使用EMR / Hadoop或其他大数据分析软件。

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

PubNub Save Message to Database

入门很容易。假设您已经有一个消息流发布到PubNub数据通道。按照这些简单的步骤。您将成功创建每个发布活动触发的实时功能。

  1. 收集频道列表。您可能对所有频道 * 感兴趣。
  2. Account Dashboard找到您的应用中,然后点击功能
  3. 为指定的API密钥集创建新模块。
  4. * 频道上创建新的 OnAfter 事件处理程序。
  5. 使用以下示例代码将您的消息异步保存到数据库。
  6. 请务必修改网址/参数以满足您的需求。
  7. 异步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 );
        });
    }