{"id":15715065,"url":"https://github.com/hideack/givalia","last_synced_at":"2025-03-30T20:13:12.617Z","repository":{"id":2841071,"uuid":"3844545","full_name":"hideack/givalia","owner":"hideack","description":"A simple asynchronous job queue system.","archived":false,"fork":false,"pushed_at":"2012-04-30T07:12:44.000Z","size":112,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-05T22:57:23.922Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hideack.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2012-03-27T14:27:08.000Z","updated_at":"2013-10-29T09:27:51.000Z","dependencies_parsed_at":"2022-08-31T20:22:29.523Z","dependency_job_id":null,"html_url":"https://github.com/hideack/givalia","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hideack%2Fgivalia","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hideack%2Fgivalia/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hideack%2Fgivalia/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hideack%2Fgivalia/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hideack","download_url":"https://codeload.github.com/hideack/givalia/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246372741,"owners_count":20766635,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-03T21:40:18.902Z","updated_at":"2025-03-30T20:13:12.595Z","avatar_url":"https://github.com/hideack.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"Givalia\n=============\n\nAbout\n------\nGivaliaは非同期式メッセージキューのRuby実装です。\n\nキューにセットされたメッセージ読み出しを行うWorkerは任意のサーバに配置することができます。またWorkerがメッセージを受信した際に処理を行う内容はRubyスクリプトで実装することが可能です。\n\n\nUsage (server \u0026 worker)\n------\nGem files:\n\n * eventmachine\n\nGivalia server:\n\n    $ cd bin\n    $ ./givalia_server -p [server port] -w [worker server port]\n\nGivalia worker:\n\n    $ cd bin\n    $ ./givalia_worker -m [Givalia server host name] -w [Givalia worker server port] -n [Worker name]\n\n * -h でUsageが表示されます。\n * サーバはメッセージ受信用に1ポート, ワーカー間の通信用に1ポート使用します。\n  * 標準では以下のポートが利用されます。\n   * メッセージ受信用(-p): 12322\n   * ワーカー間通信用(-w): 12323\n * Givaliaのサーバおよび、ワーカーをデーモンとして常駐させる場合は、-d オプションを付与することでデーモン化することができます。\n  * -dオプションを付与してサーバおよび、ワーカーを起動した場合、起動直後にデーモンへ割り当てられたPIDが標準出力されます。\n * 現状、サーバが行うキューは揮発します。Givaliaサーバが停止した場合、キューされていたメッセージは破棄されます。\n\nQue Commands\n-------\nメッセージキューに格納するにはクライアントからサーバーに対して定義されたコマンドを実行します。\nGivaliaは以下のコマンドをメッセージコマンドとして備えます。\n\n### enq\n * 概要\n  * メッセージキューにメッセージを登録します。\n\n * パラメータ一覧\n  * time\n  * module\n  * params\n  * key\n  * target_worker\n\n### stat\n * 概要\n  * メッセージキューに格納したメッセージの状態を確認します。\n * パラメータ一覧\n  * key\n\n### cancel\n * 概要\n  * メッセージキューに格納したメッセージを破棄します。\n * パラメータ一覧\n  * key\n\n### ext\n * 概要\n  * メッセージキューに格納したメッセージの実行時間を延長します。\n * パラメータ一覧\n  * key\n  * time\n\n\n\nExample\n-------\n10秒後にワーカーに配置した\"Sample\"モジュールを実行させ、パラメータとして\"parameter sample\"という文字列を渡す場合は、以下の様な記述で実装ることができます。\n\n以下の例の場合、Givaliaサーバにメッセージを通知した後、10秒後にワーカーが稼働するサーバ上で標準出力に\"Run job sample\"という文字列と、メッセージを通知する際に付与した文字列が標準出力に表示されます。\n\n\nModule sample:\n\n    # ~/module/Sample.rb\n    require File.dirname(__FILE__) + \"/../lib/workmodule\"\n\n    class Sample \u003c Givalia::WorkModule\n        def process \n            p \"Run job sample\"\n            p @params\n        end\n    end\n\n\nEnque sample:\n\n    client = Givalia::Client.new(\"127.0.0.1\", 12322)\n    res = client.enq({:time=\u003e10, :module=\u003e\"Sample\", :params=\u003e\"parameter sample\"})\n\n\nConifguration\n----------\n\nPlan\n----------\n * メッセージキューの永続化\n\n\nFeatures and Changes\n----------\n * 2012-4-15\n  * メッセージ登録時のワーカー選択機能実装\n\nHelping Out\n----------\n * -\n\nThanks\n------\nhika69, [@hika69](http://twitter.com/hika69) - REMP project \n\nAuthor\n------\nhideack, [d.hatena.ne.jp/hideack](http://d.hatena.ne.jp/hideack/), [@hideack](http://twitter.com/hideack)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhideack%2Fgivalia","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhideack%2Fgivalia","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhideack%2Fgivalia/lists"}