3

私は現在、レールプロセスと複数のワーカープロセスを備えたアーキテクチャを構築しています。これらのプロセスには、特定のイベント(オブジェクトの作成など)を通知する必要があります。

Rails
  |         API   Worker  
  +----------o------o--------o------ - - -
                        Some other
                          daemon

次のことをしたい

class Article
  after_creation do
    MessageBus.send type: "article-created", id: self.id
  end
end

プロセス(API、ワーカー、デーモンなど)がメッセージバスにサブスクライブしている間、メッセージが着信するとブロックが呼び出されます。

MessageBus.subscribe do |msg|
  if msg['type'] == 'article-created'
    # if this is my websocket daemon, I would push the article to the browser
    # if this is my indexing daemon, I would reindex the full-text search
    # if this is ... you get the deal.
  end
end

現在、ローカルのUNIXドメインソケットを使用しており、JSONをでプッシュしUNIXSocketて取得しEventMachine.start_unix_domain_serverます。しかし、それは双方向のコミュニケーションしか許しません。resqueの使用も考えましたが、これはバスが必要なときのメッセージキューです。そしてそれはredisに依存します。ルビーにメッセージバスを実装する宝石があるはずですが、グーグルしても結果は得られませんでした

4

1 に答える 1