You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails Worker中ZeroMQ订阅者无法接收消息排查求助

Quake Live服务器ZeroMQ订阅失败问题排查

我尝试从Quake Live服务器订阅ZeroMQ消息,已在QLStats上完成服务器注册(状态为绿色)。但本地基于Rails 7.2.2.1搭建的新项目中,使用ffi-rzmq 2.0.7的Worker始终无法接收消息。

Rails Worker代码

require 'ffi-rzmq'
require 'json'

class ZmqSubscriberJob
  include Sidekiq::Job

  def perform
    context = ZMQ::Context.new
    subscriber = context.socket(ZMQ::SUB)

    username = ENV['ZMQ_USERNAME']&.b
    password = ENV['ZMQ_PASSWORD']&.b
    subscriber.setsockopt(ZMQ::PLAIN_USERNAME, username)
    subscriber.setsockopt(ZMQ::PLAIN_PASSWORD, password)

    zmq_url = "tcp://#{ENV['ZMQ_HOST']}:#{ENV['ZMQ_PORT']}"
    subscriber.connect(zmq_url)
    subscriber.setsockopt(ZMQ::SUBSCRIBE, '')

    Rails.logger.info "Connected to ZeroMQ PUB socket at: #{zmq_url}, listening for all events."

    loop do
      message = ''
      subscriber.recv_string(message)
      Rails.logger.info "Received message: #{message}"
    rescue => e
      Rails.logger.error "Error: #{e.message}"
    end
  ensure
    subscriber&.close
    context&.terminate
  end
end

已完成的排查信息

  • Quake Live服务器日志确认PUB套接字正常运行:
    zmq PUB socket: tcp://0.0.0.0:27960
    
  • QLStats服务器显示认证通过:
    I: 25-01-02 10:39:09 zauth: ZAP request mechanism=PLAIN ipaddress=23.88.103.193
    I: 25-01-02 10:39:09 zauth: - allowed (PLAIN) username=XXX password=XXX
    I: 25-01-02 10:39:09 zauth: - ZAP reply status_code=200 status_text=OK
    
  • 环境变量ZMQ_USERNAME和ZMQ_PASSWORD与服务器配置及日志中的凭证完全一致
  • Rails Worker未记录任何错误日志

请问是否是ffi-rzmq版本导致的问题?

内容的提问来源于stack exchange,提问作者sckdd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 06:02:45