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