我正在使用XMPP,并且我有一个消息回调函数,它在发送每个消息的事件时都会被激活。我的目标是在回调中将消息到达的数据发送到API,并根据响应使用XMPP客户端发送回来。像Ajax一样用Ruby调用异步方法
- 用户类型消息(浏览器聊天客户端)
- 消息经由XMPP到达服务器
- 消息被发送给API
- 响应接收
- 响应被发送回聊天客户。
我给这家代码如下
admin_muc_client.activate_message_callbacks do |m|
sender = m.from.resource
room_slug = m.from.node
message = m.body
r = HTTParty.get('http://example.com/api/v1/query?msg=message')
Rails.logger.debug(r.inspect)
admin_muc_client.send_message("Message #{r.body}") if m.from.resource != 'admin'
end
这里我担心的是,由于回调是事件触发和请求API将是一个阻塞调用,这可能成为整个应用的瓶颈。 我更喜欢使用AJAX for Javascript这样会触发请求并在响应可用时发送数据。我怎么能在Ruby中实现?
我看过delayed_job和backgroundrb,它们看起来像是用于火灾和遗忘操作的工具。我需要一些以响应方式异步激活回调的东西。
我真的很感激一些关于如何实现我想要的异步行为的帮助。我也熟悉像RabbitMQ这样的消息队列,我认为这会增加很多复杂性。
真棒会给这个镜头。也许就是这样。 – Sid
我发现这是在控制台中工作,但不在开发模式下在应用程序中运行时将任务添加到队列中。顺便说一句我正在运行乘客和Apache在开发模式。 – Sid