Rails アプリで Stompgem ( https://github.com/stompgem/stomp ) と Activemessaging ( https://github.com/kookster/activemessaging ) を使用して、永続的/信頼性の高いメッセージを公開しようとしています (回復力を高めるため)サブスクライバーが処理の途中でクラッシュした場合でも)
トピックに永続的に公開して、再配信が失敗/時間指定/エラーのサブスクライバーに機能する方法はありますか?
公開にstompgemを使用:
@client.publish("/topic/" + topic_name, data_hash.to_json, {:persistent => true})
参考:https ://github.com/stompgem/stomp/blob/dev/examples/publisher.rb
トピック サブスクリプションに activemessaging を使用する
class ProcessPublisherProcessor < ApplicationProcessor
subscribes_to :process_publisher, :ack => :client
def on_message(message)
logger.debug "ProcessPublisherProcessor received: " + message
end
end
:persistent => true をクライアントの公開メソッドに追加し、:ack => :client をサブスクライバーに追加するという推奨事項を試しました。
on_message の途中でサブスクライバーを終了すると (Ruby プロセスを停止するか、ランダムな例外をスローすることにより)、ブローカー (この場合は Activemq) によってメッセージが再配信されなくなります。
ゴール:
- トピックに確実に発行する
- サブスクライブはトピックからメッセージを受信し、メッセージが消費されたことを明示的に確認します
- 選択した DLQ (配信不能キュー) にメッセージを入れる前に、ブローカーによる最大 X 回の再配信試行。
ありがとうございました、