Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在两个应用程序之间共享Sidekiq_Ruby On Rails_Sidekiq - Fatal编程技术网

Ruby on rails 在两个应用程序之间共享Sidekiq

Ruby on rails 在两个应用程序之间共享Sidekiq,ruby-on-rails,sidekiq,Ruby On Rails,Sidekiq,我正在寻找一个解决方案,用于在两个Rails应用程序之间进行通信。我有两个服务器,一个用于web,一个用于分析。当用户通过web服务器注册时,此服务器需要通知分析服务器创建一些结果(可能需要几分钟),然后从中获取结果 是否可能有一台Sidekiq服务器可以同时访问两台服务器(无需设置API)?我该怎么做呢?Sidekiq用来存储作业。您可以拥有一个共享的redis数据库,其中您可以: 从一个应用程序将数据推送到redis 从另一个应用程序从redis中提取数据 是的,这是可能的。您可以为两台服

我正在寻找一个解决方案,用于在两个Rails应用程序之间进行通信。我有两个服务器,一个用于web,一个用于分析。当用户通过web服务器注册时,此服务器需要通知分析服务器创建一些结果(可能需要几分钟),然后从中获取结果

是否可能有一台Sidekiq服务器可以同时访问两台服务器(无需设置API)?我该怎么做呢?

Sidekiq用来存储作业。您可以拥有一个共享的redis数据库,其中您可以:

  • 从一个应用程序将数据推送到redis
  • 从另一个应用程序从redis中提取数据

    • 是的,这是可能的。您可以为两台服务器共享redis数据库。在初始化器/sidekiq.rb文件中

      Sidekiq.configure_server do |config|
          config.redis = { url: 'redis://localhost:6379/0', namespace: "sidekiq_app_name_#{Rails.env}" }
      end
      
      Sidekiq.configure_client do |config|
          config.redis = { url: 'redis://localhost:6379/0', namespace: "sidekiq_app_name_#{Rails.env}" }
      end   
      

      谢谢你,皮埃尔。这似乎是一个很好的解决办法。只是想确保我正确地理解您:我可以在web服务器和后端服务器中安装Sidekiq。然后,在前端,我将Sidekiq配置为指向后端服务器中的Redis数据库服务器。我只启动Rails后端服务器。然后,前端Sidekiq可以写入后端Sidekiq(通过Redis进行通信)。Sidekiq允许您指定自定义Redis连接。只需为所有应用程序指定相同的应用程序(相同的域、相同的端口)。老问题,但我有两个不同的应用程序(不同的代码基)。两者都有自己的sidekiq实例。他们将使用一个共享的redis实例。如果我在应用程序上安排作业,我希望它仅在该应用程序上运行。另一个应用程序是否可以尝试从redis获取作业?如果是这样的话,我如何防止这种情况发生?现在需要添加redis命名空间gem。这不再是sidekiq的依赖。作为注释,似乎不建议使用
      名称空间
      。--