私はSinatra-JRubyアプリケーションを開発しており、同時API呼び出しがAPIレイヤーに来てからサービスとアダプタレイヤーで処理される状況を処理しています。共通の情報を共有するGlobalServiceモジュールを持っているので、他のどのレイヤーからでもこの共通の情報にアクセスできます。これは、同時呼び出しが来て以前のAPIの値をリセットするまでうまく動作します。私はこの問題に取り組むためにMutexを実装しましたが、これは問題への正しいアプローチではないと感じています。ここに私が実装したものがあります:JRubyでの並行処理
require 'thread'
module GlobalService
@@mutex = Mutex.new
def self.set_header(auth_subject, transaction_id)
@@mutex.synchronize {
@auth_subject = auth_subject
@transaction_id = transaction_id
}
end
def self.get_header
@@mutex.synchronize {
return @auth_subject, @transaction_id
}
end
end
この問題を解決するための代替ソリューションを教えてください。