从 Async 执行 MessageBroadcastJob 时出错默认:ArgumentError参数数量错误给定 1,预期为 2

如何解决从 Async 执行 MessageBroadcastJob 时出错默认:ArgumentError参数数量错误给定 1,预期为 2

我正在尝试通过使用 Rails 6 和 ActionCable 制作一个私人的一对一聊天应用程序来学习 ActionCable。在消息创建提交后,我正在执行一个 messageBroadcast 作业,可以在我的 Message.rb 模型文件中看到:

class Message < ApplicationRecord
  belongs_to :user
  belongs_to :conversation

  after_create_commit { MessageBroadcastJob.perform_later(self) }
end

我的消息广播工作对我来说也很好。然而,它产生了错误数量的参数,这对我来说毫无意义。下面是我的 message_braodcast_job.rb 文件:

class MessageBroadcastJob < ApplicationJob
  queue_as :default

  def perform(message)
    sender = message.user
    recipient = message.conversation.opposed_user(sender)
    broadcast_to_sender(sender,message)
    broadcast_to_recipient(recipient,message)
  end

  private

  def broadcast_to_sender(user,message)
    ActionCable.server.broadcast(
      "conversations-#{user.id}",message: render_message(message,user),conversation_id: message.conversation_id
    )
  end

  def broadcast_to_recipient(user,window: render_window(message.conversation,conversation_id: message.conversation_id
    )
  end

  def render_message(message,user)
    ApplicationController.render(
      partial: 'messages/message',locals: { message: message,user: user }
     )
  end

  def render_window(conversation,user)
    ApplicationController.render(
      partial: 'conversations/conversation',locals: { conversation: conversation,user: user }
    )
  end
end

我不知道为什么会出现这个错误。查看跟踪对我来说不是特别有帮助:

    ConversationChannel#speak({"message"=>[{"name"=>"conversation_id","value"=>"2"},{"name"=>"user_id","value"=>"4"},{"name"=>"body","value"=>"hgyhhhh"}]})
  TRANSACTION (0.1ms)  begin transaction
  ↳ app/channels/conversation_channel.rb:16:in `speak'
  User Load (0.4ms)  SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?  [["id",4],["LIMIT",1]]
  ↳ app/channels/conversation_channel.rb:16:in `speak'
  Conversation Load (0.3ms)  SELECT "conversations".* FROM "conversations" WHERE "conversations"."id" = ? LIMIT ?  [["id",2],1]]
  ↳ app/channels/conversation_channel.rb:16:in `speak'
  Message Create (3.3ms)  INSERT INTO "messages" ("body","user_id","conversation_id","created_at","updated_at") VALUES (?,?,?)  [["body","hgyhhhh"],["user_id",["conversation_id",["created_at","2021-05-10 10:47:32.689339"],["updated_at","2021-05-10 10:47:32.689339"]]
  ↳ app/channels/conversation_channel.rb:16:in `speak'
  TRANSACTION (5.6ms)  commit transaction
  ↳ app/channels/conversation_channel.rb:16:in `speak'
[ActiveJob] Enqueued MessageBroadcastJob (Job ID: f5861f88-fa39-4976-a7ca-65b4009610ec) to Async(default) with arguments: #<GlobalID:0x000000000b21f768 @uri=#<URI::GID gid://group12/Message/19>>
  Message Load (0.3ms)  SELECT "messages".* FROM "messages" WHERE "messages"."id" = ? LIMIT ?  [["id",19],1]]
[ActiveJob] [MessageBroadcastJob] [f5861f88-fa39-4976-a7ca-65b4009610ec] Performing MessageBroadcastJob (Job ID: f5861f88-fa39-4976-a7ca-65b4009610ec) from Async(default) enqueued at 2021-05-10T10:47:32Z with arguments: #<GlobalID:0x000000000b2b3df0 @uri=#<URI::GID gid://group12/Message/19>>
[ActiveJob] [MessageBroadcastJob] [f5861f88-fa39-4976-a7ca-65b4009610ec]   User Load (0.3ms)  SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?  [["id",1]]
[ActiveJob] [MessageBroadcastJob] [f5861f88-fa39-4976-a7ca-65b4009610ec]   ↳ app/jobs/message_broadcast_job.rb:5:in `perform'
[ActiveJob] [MessageBroadcastJob] [f5861f88-fa39-4976-a7ca-65b4009610ec]   Conversation Load (0.2ms)  SELECT "conversations".* FROM "conversations" WHERE "conversations"."id" = ? LIMIT ?  [["id",1]]
[ActiveJob] [MessageBroadcastJob] [f5861f88-fa39-4976-a7ca-65b4009610ec]   ↳ app/jobs/message_broadcast_job.rb:6:in `perform'
[ActiveJob] [MessageBroadcastJob] [f5861f88-fa39-4976-a7ca-65b4009610ec]   CACHE User Load (0.0ms)  SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?  [["id",1]]
[ActiveJob] [MessageBroadcastJob] [f5861f88-fa39-4976-a7ca-65b4009610ec]   ↳ app/models/conversation.rb:22:in `opposed_user'
[ActiveJob] [MessageBroadcastJob] [f5861f88-fa39-4976-a7ca-65b4009610ec]   User Load (0.3ms)  SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?  [["id",3],1]]
[ActiveJob] [MessageBroadcastJob] [f5861f88-fa39-4976-a7ca-65b4009610ec]   ↳ app/models/conversation.rb:22:in `opposed_user'
[ActiveJob] [MessageBroadcastJob] [f5861f88-fa39-4976-a7ca-65b4009610ec]   Rendered messages/_message.html.erb (Duration: 0.1ms | Allocations: 28)
[ActiveJob] [MessageBroadcastJob] [f5861f88-fa39-4976-a7ca-65b4009610ec] Error performing MessageBroadcastJob (Job ID: f5861f88-fa39-4976-a7ca-65b4009610ec) from Async(default) in 54.26ms: ArgumentError (wrong number of arguments (given 1,expected 2)):
C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/actioncable-6.1.3.1/lib/action_cable/server/broadcasting.rb:24:in `broadcast'
C:/Users/Moussa Sarr/OneDrive/Desktop/Group12/app/jobs/message_broadcast_job.rb:14:in `broadcast_to_sender'
C:/Users/Moussa Sarr/OneDrive/Desktop/Group12/app/jobs/message_broadcast_job.rb:7:in `perform'
C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/activejob-6.1.3.1/lib/active_job/execution.rb:48:in `block in perform_now'
C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/activesupport-6.1.3.1/lib/active_support/callbacks.rb:117:in `block in run_callbacks'
C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/i18n-1.8.10/lib/i18n.rb:314:in `with_locale'
C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/activejob-6.1.3.1/lib/active_job/translation.rb:9:in `block (2 levels) in <module:Translation>'
C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/activesupport-6.1.3.1/lib/active_support/callbacks.rb:126:in `instance_exec'
C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/activesupport-6.1.3.1/lib/active_support/callbacks.rb:126:in `block in run_callbacks'
C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/activesupport-6.1.3.1/lib/active_support/core_ext/time/zones.rb:66:in `use_zone'
C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/activejob-6.1.3.1/lib/active_job/timezones.rb:9:in `block (2 levels) in <module:Timezones>'
C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/activesupport-6.1.3.1/lib/active_support/callbacks.rb:126:in `instance_exec'
C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/activesupport-6.1.3.1/lib/active_support/callbacks.rb:126:in `block in run_callbacks'
C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/activejob-6.1.3.1/lib/active_job/instrumentation.rb:21:in `block in instrument'
C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/activesupport-6.1.3.1/lib/active_support/notifications.rb:203:in `block in instrument'
C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/activesupport-6.1.3.1/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/activesupport-6.1.3.1/lib/active_support/notifications.rb:203:in `instrument'
C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/activejob-6.1.3.1/lib/active_job/instrumentation.rb:31:in `instrument'
C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/activejob-6.1.3.1/lib/active_job/instrumentation.rb:14:in `block (2 levels) in <module:Instrumentation>'
C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/activesupport-6.1.3.1/lib/active_support/callbacks.rb:126:in `instance_exec'
C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/activesupport-6.1.3.1/lib/active_support/callbacks.rb:126:in `block in run_callbacks'
C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/activejob-6.1.3.1/lib/active_job/logging.rb:22:in `block in tag_logger'

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-