Class: Karafka::Web::Pro::Ui::Controllers::ScheduledMessages::MessagesController

Inherits:
BaseController
  • Object
show all
Defined in:
lib/karafka/web/pro/ui/controllers/scheduled_messages/messages_controller.rb

Overview

Provides management of schedules related messages

Instance Method Summary collapse

Instance Method Details

#cancel(topic_id, partition_id, message_offset) ⇒ Object

Generates a cancel request for a given schedule message

Parameters:

  • topic_id (String)
  • partition_id (Integer)
  • message_offset (Integer)


43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/karafka/web/pro/ui/controllers/scheduled_messages/messages_controller.rb', line 43

def cancel(topic_id, partition_id, message_offset)
  # Fetches the message we want to cancel to get its key
  scheduled_message = Karafka::Admin.read_topic(
    topic_id,
    partition_id,
    1,
    message_offset
  ).first

  cancel_message = ::Karafka::Pro::ScheduledMessages.cancel(
    key: scheduled_message.key,
    envelope: {
      topic: topic_id,
      partition: partition_id
    }
  )

  Karafka::Web.producer.produce_sync(cancel_message)

  redirect(
    :back,
    success: format_flash(
      "A scheduled message with offset ? from ?#? had a ? successfully created",
      message_offset,
      topic_id,
      partition_id,
      "cancel request"
    )
  )
end