1

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 回の再配信試行。

ありがとうございました、

4

0 に答える 0