pgbus 0.2.6 → 0.2.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0d12150a0ea8aea034f08e626bfa2c553cf75349eb502d7a0fe0a50a867aa11b
4
- data.tar.gz: 990216a4e6b7db7be81e888d90fe2d56ea536fa1e64a2507206dcd5524a255c5
3
+ metadata.gz: ef44191dc6dab011a25d7ab69e0a8ad9ab5432b48301ba6d4e54f65afbb52c61
4
+ data.tar.gz: c75c9857c9889b206b09974d920fee96023ba1b1280e7d1734ff833095833c84
5
5
  SHA512:
6
- metadata.gz: f7e706c2824a4f00401027bd08df2c663502586a0a48fdd2e4150341a1e50fac520c50a503b2a6cff2d48d482d069ac66a605b9ce73a14513d9e65537da45f88
7
- data.tar.gz: 64ad1a0978e42ddd271d50c224540bb3200e291912e3fde1bee72fe30eb74470b60833580a0a211785aa0830eb640dde463546c3bd748a33e9de0f903e79abad
6
+ metadata.gz: 686c4aa7e111ce5d1a82b82d135bf37da2f8321142f8d09b522c06800e5a4a386b259ddac62e6666043b363a44345b57c444bd0656c6010f39e12ad3722a50a0
7
+ data.tar.gz: ade1d916918327f0680d4d029444da9f91d8da86e8210497c59e0bf5a0962bdad370eff8dbee3dacbd1207b040c9c3f8c80c28c80abd507b9a4122012078a949
data/README.md CHANGED
@@ -707,7 +707,7 @@ pgbus help # Show help
707
707
  The dashboard is a mountable Rails engine at `/pgbus` with:
708
708
 
709
709
  - **Overview** -- queue depths, enqueued count, active processes, failure count, throughput rate
710
- - **Queues** -- per-queue metrics, purge/pause/resume actions
710
+ - **Queues** -- per-queue metrics, purge/pause/resume/delete actions
711
711
  - **Jobs** -- enqueued and failed jobs, retry/discard actions
712
712
  - **Dead letter** -- DLQ messages with retry/discard, bulk actions
713
713
  - **Processes** -- active workers/dispatcher/consumers with heartbeat status
@@ -716,7 +716,17 @@ The dashboard is a mountable Rails engine at `/pgbus` with:
716
716
  - **Locks** -- active job uniqueness locks with state (queued/executing), owner PID@hostname, age
717
717
  - **Insights** -- throughput chart (jobs/min), status distribution donut, slowest job classes table
718
718
 
719
- All tables use Turbo Frames for periodic auto-refresh without page reloads.
719
+ All tables use Turbo Frames for periodic auto-refresh without page reloads. Destructive actions use styled confirmation dialogs (not browser `confirm()`), and flash messages appear as auto-dismissing toast notifications.
720
+
721
+ ### Queue management
722
+
723
+ The queues page lets you manage PGMQ queues directly:
724
+
725
+ - **Purge** -- removes all messages from the queue (the queue itself remains)
726
+ - **Delete** -- permanently drops the queue from PGMQ (removes the queue table and metadata)
727
+ - **Pause / Resume** -- pauses or resumes job processing for a queue
728
+
729
+ All destructive actions require confirmation. Pause/resume and delete are available on both the queue index and detail pages.
720
730
 
721
731
  ### Dark mode
722
732
 
@@ -10,6 +10,7 @@ module Pgbus
10
10
  @queue = data_source.queue_detail(params[:name])
11
11
  redirect_to queues_path, alert: "Queue not found." and return unless @queue
12
12
 
13
+ @paused = data_source.queue_paused?(params[:name])
13
14
  @messages = data_source.jobs(queue_name: params[:name], page: page_param, per_page: per_page)
14
15
  end
15
16
 
@@ -18,6 +19,11 @@ module Pgbus
18
19
  redirect_to queue_path(name: params[:name]), notice: "Queue purged."
19
20
  end
20
21
 
22
+ def destroy
23
+ data_source.drop_queue(params[:name])
24
+ redirect_to queues_path, notice: t("pgbus.queues.destroy.success", name: params[:name])
25
+ end
26
+
21
27
  def pause
22
28
  data_source.pause_queue(params[:name], reason: params[:reason])
23
29
  redirect_to queue_path(name: params[:name]), notice: "Queue paused."
@@ -27,5 +33,21 @@ module Pgbus
27
33
  data_source.resume_queue(params[:name])
28
34
  redirect_to queue_path(name: params[:name]), notice: "Queue resumed."
29
35
  end
36
+
37
+ def retry_message
38
+ if data_source.retry_job(params[:name], params[:msg_id])
39
+ redirect_back fallback_location: queue_path(name: params[:name]), notice: t("pgbus.queues.show.message_retried")
40
+ else
41
+ redirect_back fallback_location: queue_path(name: params[:name]), alert: t("pgbus.queues.show.message_retry_failed")
42
+ end
43
+ end
44
+
45
+ def discard_message
46
+ if data_source.discard_job(params[:name], params[:msg_id])
47
+ redirect_back fallback_location: queue_path(name: params[:name]), notice: t("pgbus.queues.show.message_discarded")
48
+ else
49
+ redirect_back fallback_location: queue_path(name: params[:name]), alert: t("pgbus.queues.show.message_discard_failed")
50
+ end
51
+ end
30
52
  end
31
53
  end
@@ -81,6 +81,77 @@
81
81
  <script type="module">
82
82
  import * as Turbo from "https://esm.sh/@hotwired/turbo@8";
83
83
 
84
+ // -- Custom confirm dialog (replaces browser confirm) --
85
+ Turbo.config.forms.confirm = (message, element) => {
86
+ const dialog = document.getElementById("pgbus-confirm-dialog");
87
+ const messageEl = document.getElementById("pgbus-confirm-message");
88
+ const titleEl = document.getElementById("pgbus-confirm-title");
89
+ const confirmBtn = document.getElementById("pgbus-confirm-btn");
90
+ const iconEl = document.getElementById("pgbus-confirm-icon");
91
+
92
+ // Detect action type from the element
93
+ const turboMethod = element.getAttribute("data-turbo-method");
94
+ const isDelete = turboMethod === "delete";
95
+
96
+ // Set title based on action
97
+ titleEl.textContent = isDelete ? "<%= t("pgbus.dialogs.delete_title", default: "Delete") %>" : "<%= t("pgbus.dialogs.confirm_title", default: "Are you sure?") %>";
98
+ messageEl.textContent = message;
99
+
100
+ // Style confirm button based on action severity
101
+ confirmBtn.className = "rounded-md px-4 py-2 text-sm font-medium text-white focus:outline-none focus:ring-2";
102
+ if (isDelete) {
103
+ confirmBtn.classList.add("bg-red-600", "hover:bg-red-500", "focus:ring-red-500");
104
+ confirmBtn.textContent = "<%= t("pgbus.dialogs.delete", default: "Delete") %>";
105
+ iconEl.className = "flex-shrink-0 flex items-center justify-center h-10 w-10 rounded-full bg-red-100 dark:bg-red-900/30";
106
+ } else {
107
+ confirmBtn.classList.add("bg-yellow-500", "hover:bg-yellow-400", "focus:ring-yellow-500");
108
+ confirmBtn.textContent = "<%= t("pgbus.dialogs.confirm", default: "Confirm") %>";
109
+ iconEl.className = "flex-shrink-0 flex items-center justify-center h-10 w-10 rounded-full bg-yellow-100 dark:bg-yellow-900/30";
110
+ }
111
+
112
+ dialog.showModal();
113
+
114
+ return new Promise((resolve) => {
115
+ dialog.addEventListener("close", () => {
116
+ resolve(dialog.returnValue === "confirm");
117
+ }, { once: true });
118
+ });
119
+ };
120
+
121
+ // -- Toast notifications --
122
+ function showToast(message, type = "success") {
123
+ const container = document.getElementById("pgbus-toast-container");
124
+ const toast = document.createElement("div");
125
+
126
+ const colors = {
127
+ success: "bg-green-50 dark:bg-green-900/30 text-green-800 dark:text-green-300 border-green-200 dark:border-green-800",
128
+ error: "bg-red-50 dark:bg-red-900/30 text-red-800 dark:text-red-300 border-red-200 dark:border-red-800",
129
+ info: "bg-blue-50 dark:bg-blue-900/30 text-blue-800 dark:text-blue-300 border-blue-200 dark:border-blue-800",
130
+ };
131
+
132
+ toast.className = `rounded-md border p-3 text-sm shadow-lg transition-all duration-300 ${colors[type] || colors.info}`;
133
+ toast.textContent = message;
134
+ container.appendChild(toast);
135
+
136
+ setTimeout(() => {
137
+ toast.style.opacity = "0";
138
+ toast.style.transform = "translateX(100%)";
139
+ setTimeout(() => toast.remove(), 300);
140
+ }, 5000);
141
+ }
142
+
143
+ // Render flash toasts from <template> tags.
144
+ // Must run on turbo:load as well — module scripts only execute once,
145
+ // but Turbo Drive replaces the body on navigation.
146
+ function renderFlashToasts() {
147
+ document.querySelectorAll("template[data-pgbus-toast]").forEach(tpl => {
148
+ showToast(tpl.content.textContent.trim(), tpl.dataset.pgbusToast);
149
+ tpl.remove();
150
+ });
151
+ }
152
+ renderFlashToasts();
153
+ document.addEventListener("turbo:load", renderFlashToasts);
154
+
84
155
  <% if Pgbus.configuration.web_live_updates %>
85
156
  const interval = <%= Pgbus.configuration.web_refresh_interval %>;
86
157
  if (interval > 0) {
@@ -200,21 +271,54 @@
200
271
  </div>
201
272
  </nav>
202
273
 
203
- <!-- Flash messages -->
274
+ <!-- Toast container (fixed top-right) -->
275
+ <div id="pgbus-toast-container" class="fixed top-4 right-4 z-[100] flex flex-col space-y-2 max-w-sm"></div>
276
+
277
+ <!-- Flash messages rendered as toasts -->
204
278
  <% if notice %>
205
- <div class="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8 mt-4">
206
- <div class="rounded-md bg-green-50 dark:bg-green-900/30 p-3">
207
- <p class="text-sm text-green-800 dark:text-green-300"><%= notice %></p>
208
- </div>
209
- </div>
279
+ <template data-pgbus-toast="success"><%= notice %></template>
210
280
  <% end %>
211
281
  <% if alert %>
212
- <div class="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8 mt-4">
213
- <div class="rounded-md bg-red-50 dark:bg-red-900/30 p-3">
214
- <p class="text-sm text-red-800 dark:text-red-300"><%= alert %></p>
282
+ <template data-pgbus-toast="error"><%= alert %></template>
283
+ <% end %>
284
+
285
+ <!-- Confirm dialog -->
286
+ <dialog id="pgbus-confirm-dialog" class="rounded-lg shadow-xl bg-white dark:bg-gray-800 p-0 backdrop:bg-gray-900/50 max-w-md w-full">
287
+ <div class="p-6">
288
+ <div class="flex items-start space-x-4">
289
+ <div id="pgbus-confirm-icon" class="flex-shrink-0 flex items-center justify-center h-10 w-10 rounded-full bg-red-100 dark:bg-red-900/30">
290
+ <svg class="h-6 w-6 text-red-600 dark:text-red-400" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
291
+ <path stroke-linecap="round" stroke-linejoin="round" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126ZM12 15.75h.007v.008H12v-.008Z"/>
292
+ </svg>
293
+ </div>
294
+ <div class="flex-1">
295
+ <h3 class="text-lg font-semibold text-gray-900 dark:text-white" id="pgbus-confirm-title"></h3>
296
+ <p class="mt-2 text-sm text-gray-600 dark:text-gray-300" id="pgbus-confirm-message"></p>
297
+ </div>
215
298
  </div>
216
299
  </div>
217
- <% end %>
300
+ <form method="dialog" class="flex justify-end space-x-3 px-6 py-4 bg-gray-50 dark:bg-gray-900/50 rounded-b-lg">
301
+ <button value="cancel" class="rounded-md px-4 py-2 text-sm font-medium text-gray-700 dark:text-gray-300 bg-white dark:bg-gray-700 border border-gray-300 dark:border-gray-600 hover:bg-gray-50 dark:hover:bg-gray-600 focus:outline-none focus:ring-2 focus:ring-indigo-500"><%= t("pgbus.dialogs.cancel", default: "Cancel") %></button>
302
+ <button value="confirm" id="pgbus-confirm-btn" class="rounded-md px-4 py-2 text-sm font-medium text-white bg-red-600 hover:bg-red-500 focus:outline-none focus:ring-2 focus:ring-red-500"><%= t("pgbus.dialogs.confirm", default: "Confirm") %></button>
303
+ </form>
304
+ </dialog>
305
+
306
+ <!-- Alert dialog -->
307
+ <dialog id="pgbus-alert-dialog" class="rounded-lg shadow-xl bg-white dark:bg-gray-800 p-0 backdrop:bg-gray-900/50 max-w-md w-full">
308
+ <div class="p-6">
309
+ <div class="flex items-start space-x-4">
310
+ <div class="flex-shrink-0 flex items-center justify-center h-10 w-10 rounded-full bg-blue-100 dark:bg-blue-900/30">
311
+ <svg class="h-6 w-6 text-blue-600 dark:text-blue-400" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
312
+ <path stroke-linecap="round" stroke-linejoin="round" d="m11.25 11.25.041-.02a.75.75 0 0 1 1.063.852l-.708 2.836a.75.75 0 0 0 1.063.853l.041-.021M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9-3.75h.008v.008H12V8.25Z"/>
313
+ </svg>
314
+ </div>
315
+ <p class="text-sm text-gray-700 dark:text-gray-300" id="pgbus-alert-message"></p>
316
+ </div>
317
+ </div>
318
+ <form method="dialog" class="flex justify-end px-6 py-4 bg-gray-50 dark:bg-gray-900/50 rounded-b-lg">
319
+ <button value="ok" class="rounded-md px-4 py-2 text-sm font-medium text-white bg-indigo-600 hover:bg-indigo-500 focus:outline-none focus:ring-2 focus:ring-indigo-500"><%= t("pgbus.dialogs.ok", default: "OK") %></button>
320
+ </form>
321
+ </dialog>
218
322
 
219
323
  <!-- Content -->
220
324
  <main class="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8 py-6">
@@ -57,6 +57,16 @@
57
57
  <pre class="text-xs text-gray-600 bg-white dark:bg-gray-800 rounded p-2 mt-1 overflow-x-auto"><%= JSON.pretty_generate(JSON.parse(j[:headers])) rescue j[:headers] %></pre>
58
58
  </details>
59
59
  <% end %>
60
+ <div class="flex space-x-2 mt-3 pt-3 border-t border-gray-200 dark:border-gray-700">
61
+ <%= button_to t("pgbus.jobs.enqueued_table.retry"), pgbus.retry_message_queue_path(name: j[:queue_name], msg_id: j[:msg_id]),
62
+ method: :post,
63
+ class: "rounded-md bg-indigo-600 px-3 py-1.5 text-xs font-medium text-white hover:bg-indigo-500",
64
+ data: { turbo_confirm: t("pgbus.jobs.enqueued_table.retry_confirm"), turbo_frame: "_top" } %>
65
+ <%= button_to t("pgbus.jobs.enqueued_table.discard"), pgbus.discard_message_queue_path(name: j[:queue_name], msg_id: j[:msg_id]),
66
+ method: :post,
67
+ class: "rounded-md bg-red-600 px-3 py-1.5 text-xs font-medium text-white hover:bg-red-500",
68
+ data: { turbo_confirm: t("pgbus.jobs.enqueued_table.discard_confirm"), turbo_frame: "_top" } %>
69
+ </div>
60
70
  </div>
61
71
  </details>
62
72
  </td>
@@ -43,6 +43,10 @@
43
43
  method: :post,
44
44
  class: "text-xs text-red-600 hover:text-red-800 font-medium",
45
45
  data: { turbo_confirm: t("pgbus.queues.queues_list.purge_confirm", name: q[:name]), turbo_frame: "_top" } %>
46
+ <%= button_to t("pgbus.queues.queues_list.delete"), pgbus.queue_path(name: q[:name]),
47
+ method: :delete,
48
+ class: "text-xs text-red-600 hover:text-red-800 font-medium",
49
+ data: { turbo_confirm: t("pgbus.queues.queues_list.delete_confirm", name: q[:name]), turbo_frame: "_top" } %>
46
50
  </td>
47
51
  </tr>
48
52
  <% end %>
@@ -1,6 +1,11 @@
1
1
  <div class="flex items-center justify-between mb-6">
2
2
  <div>
3
- <h1 class="text-2xl font-bold text-gray-900 dark:text-white"><%= @queue&.dig(:name) || params[:name] %></h1>
3
+ <h1 class="text-2xl font-bold text-gray-900 dark:text-white">
4
+ <%= @queue&.dig(:name) || params[:name] %>
5
+ <% if @paused %>
6
+ <span class="inline-flex items-center rounded-full bg-yellow-100 px-2.5 py-0.5 text-xs font-medium text-yellow-800"><%= t("pgbus.queues.queues_list.paused") %></span>
7
+ <% end %>
8
+ </h1>
4
9
  <% if @queue %>
5
10
  <p class="text-sm text-gray-500 mt-1">
6
11
  <%= t("pgbus.queues.show.depth") %> <span class="font-mono"><%= @queue[:queue_length] %></span> |
@@ -10,10 +15,24 @@
10
15
  <% end %>
11
16
  </div>
12
17
  <div class="flex space-x-2">
18
+ <% if @paused %>
19
+ <%= button_to t("pgbus.queues.show.resume"), pgbus.resume_queue_path(name: params[:name]),
20
+ method: :post,
21
+ class: "rounded-md bg-green-600 px-3 py-2 text-sm font-medium text-white hover:bg-green-500" %>
22
+ <% else %>
23
+ <%= button_to t("pgbus.queues.show.pause"), pgbus.pause_queue_path(name: params[:name]),
24
+ method: :post,
25
+ class: "rounded-md bg-yellow-500 px-3 py-2 text-sm font-medium text-white hover:bg-yellow-400",
26
+ data: { turbo_confirm: t("pgbus.queues.show.pause_confirm") } %>
27
+ <% end %>
13
28
  <%= button_to t("pgbus.queues.show.purge_queue"), pgbus.purge_queue_path(name: params[:name]),
14
29
  method: :post,
15
30
  class: "rounded-md bg-red-600 px-3 py-2 text-sm font-medium text-white hover:bg-red-500",
16
31
  data: { turbo_confirm: t("pgbus.queues.show.purge_confirm") } %>
32
+ <%= button_to t("pgbus.queues.show.delete_queue"), pgbus.queue_path(name: params[:name]),
33
+ method: :delete,
34
+ class: "rounded-md bg-red-800 px-3 py-2 text-sm font-medium text-white hover:bg-red-700",
35
+ data: { turbo_confirm: t("pgbus.queues.show.delete_confirm") } %>
17
36
  </div>
18
37
  </div>
19
38
 
@@ -27,6 +46,7 @@
27
46
  <th class="px-4 py-3 text-left text-xs font-medium uppercase text-gray-500"><%= t("pgbus.queues.show.headers.reads") %></th>
28
47
  <th class="px-4 py-3 text-left text-xs font-medium uppercase text-gray-500"><%= t("pgbus.queues.show.headers.vt") %></th>
29
48
  <th class="px-4 py-3 text-left text-xs font-medium uppercase text-gray-500"><%= t("pgbus.queues.show.headers.payload") %></th>
49
+ <th class="px-4 py-3 text-right text-xs font-medium uppercase text-gray-500"><%= t("pgbus.queues.show.headers.actions") %></th>
30
50
  </tr>
31
51
  </thead>
32
52
  <tbody class="divide-y divide-gray-100 dark:divide-gray-700">
@@ -39,10 +59,20 @@
39
59
  <td class="px-4 py-3 text-sm text-gray-600 font-mono text-xs max-w-md truncate">
40
60
  <%= pgbus_json_preview(m[:message]) %>
41
61
  </td>
62
+ <td class="px-4 py-3 text-sm text-right space-x-1 whitespace-nowrap">
63
+ <%= button_to t("pgbus.queues.show.retry"), pgbus.retry_message_queue_path(name: params[:name], msg_id: m[:msg_id]),
64
+ method: :post,
65
+ class: "text-xs text-indigo-600 hover:text-indigo-800 font-medium",
66
+ data: { turbo_confirm: t("pgbus.queues.show.retry_confirm") } %>
67
+ <%= button_to t("pgbus.queues.show.discard"), pgbus.discard_message_queue_path(name: params[:name], msg_id: m[:msg_id]),
68
+ method: :post,
69
+ class: "text-xs text-red-600 hover:text-red-800 font-medium",
70
+ data: { turbo_confirm: t("pgbus.queues.show.discard_confirm") } %>
71
+ </td>
42
72
  </tr>
43
73
  <% end %>
44
74
  <% if @messages.empty? %>
45
- <tr><td colspan="5" class="px-4 py-8 text-center text-sm text-gray-400"><%= t("pgbus.queues.show.empty") %></td></tr>
75
+ <tr><td colspan="6" class="px-4 py-8 text-center text-sm text-gray-400"><%= t("pgbus.queues.show.empty") %></td></tr>
46
76
  <% end %>
47
77
  </tbody>
48
78
  </table>
@@ -1,6 +1,13 @@
1
1
  ---
2
2
  da:
3
3
  pgbus:
4
+ dialogs:
5
+ cancel: Annuller
6
+ confirm: Bekræft
7
+ confirm_title: Er du sikker?
8
+ delete: Slet
9
+ delete_title: Slet
10
+ ok: OK
4
11
  dashboard:
5
12
  processes_table:
6
13
  empty: Ingen processer kører
@@ -170,6 +177,10 @@ da:
170
177
  timezone: 'Tidszone:'
171
178
  visible_at: 'Synlig fra:'
172
179
  title: Job i kø
180
+ discard: Kassér
181
+ discard_confirm: Kassér denne besked?
182
+ retry: Prøv igen
183
+ retry_confirm: Nulstil synlighedstimeout og prøv igen?
173
184
  failed_table:
174
185
  discard: Kassér
175
186
  discard_confirm: Kassér dette job?
@@ -280,23 +291,41 @@ da:
280
291
  queue: Kø
281
292
  total_ever: Total nogensinde
282
293
  visible: Synlig
294
+ delete: Slet
295
+ delete_confirm: Slet køen %{name} permanent? Dette kan ikke fortrydes.
283
296
  pause: Pause
284
297
  pause_confirm: Pause behandling i %{name}?
285
298
  paused: Pauset
286
299
  purge: Rens
287
300
  purge_confirm: Rens alle beskeder fra %{name}?
288
301
  resume: Genoptag
302
+ destroy:
303
+ success: Køen %{name} slettet.
289
304
  show:
305
+ delete_confirm: Slet denne kø permanent? Dette kan ikke fortrydes.
306
+ delete_queue: Slet kø
290
307
  depth: 'Dybde:'
308
+ discard: Kassér
309
+ discard_confirm: Kassér denne besked?
291
310
  empty: Køen er tom
292
311
  headers:
312
+ actions: Handlinger
293
313
  enqueued: Sat i kø
294
314
  id: ID
295
315
  payload: Indhold
296
316
  reads: Læsninger
297
317
  vt: VT
318
+ message_discard_failed: Kunne ikke kassere besked.
319
+ message_discarded: Besked kasseret.
320
+ message_retried: Beskedens synlighed nulstillet.
321
+ message_retry_failed: Kunne ikke prøve besked igen.
322
+ pause: Pause
323
+ pause_confirm: Pause behandling?
298
324
  purge_confirm: Rens alle beskeder?
299
325
  purge_queue: Rens kø
326
+ resume: Genoptag
327
+ retry: Prøv igen
328
+ retry_confirm: Nulstil synlighedstimeout og prøv igen?
300
329
  total: 'Total:'
301
330
  visible: 'Synlig:'
302
331
  recurring_tasks:
@@ -1,6 +1,13 @@
1
1
  ---
2
2
  de:
3
3
  pgbus:
4
+ dialogs:
5
+ cancel: Abbrechen
6
+ confirm: Bestätigen
7
+ confirm_title: Sind Sie sicher?
8
+ delete: Löschen
9
+ delete_title: Löschen
10
+ ok: OK
4
11
  dashboard:
5
12
  processes_table:
6
13
  empty: Keine Prozesse laufen
@@ -170,6 +177,10 @@ de:
170
177
  timezone: 'Zeitzone:'
171
178
  visible_at: 'Sichtbar ab:'
172
179
  title: Eingereihte Jobs
180
+ discard: Verwerfen
181
+ discard_confirm: Diese Nachricht verwerfen?
182
+ retry: Wiederholen
183
+ retry_confirm: Sichtbarkeits-Timeout zurücksetzen und erneut versuchen?
173
184
  failed_table:
174
185
  discard: Verwerfen
175
186
  discard_confirm: Diesen Job verwerfen?
@@ -280,23 +291,41 @@ de:
280
291
  queue: Warteschlange
281
292
  total_ever: Insgesamt jemals
282
293
  visible: Sichtbar
294
+ delete: Löschen
295
+ delete_confirm: Warteschlange %{name} dauerhaft löschen? Dies kann nicht rückgängig gemacht werden.
283
296
  pause: Pause
284
297
  pause_confirm: Verarbeitung für %{name} pausieren?
285
298
  paused: Pausiert
286
299
  purge: Bereinigen
287
300
  purge_confirm: Alle Nachrichten von %{name} löschen?
288
301
  resume: Fortsetzen
302
+ destroy:
303
+ success: Warteschlange %{name} gelöscht.
289
304
  show:
305
+ delete_confirm: Diese Warteschlange dauerhaft löschen? Dies kann nicht rückgängig gemacht werden.
306
+ delete_queue: Warteschlange löschen
290
307
  depth: 'Tiefe:'
308
+ discard: Verwerfen
309
+ discard_confirm: Diese Nachricht verwerfen?
291
310
  empty: Warteschlange ist leer
292
311
  headers:
312
+ actions: Aktionen
293
313
  enqueued: Eingereiht
294
314
  id: ID
295
315
  payload: Nutzlast
296
316
  reads: Lesevorgänge
297
317
  vt: VT
318
+ message_discard_failed: Nachricht konnte nicht verworfen werden.
319
+ message_discarded: Nachricht verworfen.
320
+ message_retried: Sichtbarkeit der Nachricht zurückgesetzt.
321
+ message_retry_failed: Nachricht konnte nicht wiederholt werden.
322
+ pause: Pause
323
+ pause_confirm: Verarbeitung pausieren?
298
324
  purge_confirm: Alle Nachrichten löschen?
299
325
  purge_queue: Warteschlange bereinigen
326
+ resume: Fortsetzen
327
+ retry: Wiederholen
328
+ retry_confirm: Sichtbarkeits-Timeout zurücksetzen und erneut versuchen?
300
329
  total: 'Insgesamt:'
301
330
  visible: 'Sichtbar:'
302
331
  recurring_tasks:
@@ -1,6 +1,13 @@
1
1
  ---
2
2
  en:
3
3
  pgbus:
4
+ dialogs:
5
+ cancel: Cancel
6
+ confirm: Confirm
7
+ confirm_title: Are you sure?
8
+ delete: Delete
9
+ delete_title: Delete
10
+ ok: OK
4
11
  dashboard:
5
12
  processes_table:
6
13
  empty: No processes running
@@ -169,6 +176,10 @@ en:
169
176
  scheduled: 'Scheduled:'
170
177
  timezone: 'Timezone:'
171
178
  visible_at: 'Visible at:'
179
+ discard: Discard
180
+ discard_confirm: Discard this message?
181
+ retry: Retry
182
+ retry_confirm: Reset visibility timeout and retry?
172
183
  title: Enqueued Jobs
173
184
  failed_table:
174
185
  discard: Discard
@@ -280,23 +291,41 @@ en:
280
291
  queue: Queue
281
292
  total_ever: Total Ever
282
293
  visible: Visible
294
+ delete: Delete
295
+ delete_confirm: Permanently delete queue %{name}? This cannot be undone.
283
296
  pause: Pause
284
297
  pause_confirm: Pause processing for %{name}?
285
298
  paused: Paused
286
299
  purge: Purge
287
300
  purge_confirm: Purge all messages from %{name}?
288
301
  resume: Resume
302
+ destroy:
303
+ success: Queue %{name} deleted.
289
304
  show:
305
+ delete_confirm: Permanently delete this queue? This cannot be undone.
306
+ delete_queue: Delete Queue
290
307
  depth: 'Depth:'
308
+ discard: Discard
309
+ discard_confirm: Discard this message?
291
310
  empty: Queue is empty
292
311
  headers:
312
+ actions: Actions
293
313
  enqueued: Enqueued
294
314
  id: ID
295
315
  payload: Payload
296
316
  reads: Reads
297
317
  vt: VT
318
+ message_discard_failed: Could not discard message.
319
+ message_discarded: Message discarded.
320
+ message_retried: Message visibility reset.
321
+ message_retry_failed: Could not retry message.
322
+ pause: Pause
323
+ pause_confirm: Pause processing?
298
324
  purge_confirm: Purge all messages?
299
325
  purge_queue: Purge Queue
326
+ resume: Resume
327
+ retry: Retry
328
+ retry_confirm: Reset visibility timeout and retry?
300
329
  total: 'Total:'
301
330
  visible: 'Visible:'
302
331
  recurring_tasks:
@@ -1,6 +1,13 @@
1
1
  ---
2
2
  es:
3
3
  pgbus:
4
+ dialogs:
5
+ cancel: Cancelar
6
+ confirm: Confirmar
7
+ confirm_title: "¿Estás seguro?"
8
+ delete: Eliminar
9
+ delete_title: Eliminar
10
+ ok: Aceptar
4
11
  dashboard:
5
12
  processes_table:
6
13
  empty: No hay procesos en ejecución
@@ -170,6 +177,10 @@ es:
170
177
  timezone: 'Zona horaria:'
171
178
  visible_at: 'Visible en:'
172
179
  title: Trabajos en Cola
180
+ discard: Descartar
181
+ discard_confirm: "¿Descartar este mensaje?"
182
+ retry: Reintentar
183
+ retry_confirm: "¿Restablecer tiempo de visibilidad y reintentar?"
173
184
  failed_table:
174
185
  discard: Descartar
175
186
  discard_confirm: "¿Descartar este trabajo?"
@@ -280,23 +291,41 @@ es:
280
291
  queue: Cola
281
292
  total_ever: Total acumulado
282
293
  visible: Visible
294
+ delete: Eliminar
295
+ delete_confirm: "¿Eliminar permanentemente la cola %{name}? Esto no se puede deshacer."
283
296
  pause: Pausar
284
297
  pause_confirm: "¿Pausar el procesamiento de %{name}?"
285
298
  paused: Pausado
286
299
  purge: Purgar
287
300
  purge_confirm: "¿Purgar todos los mensajes de %{name}?"
288
301
  resume: Reanudar
302
+ destroy:
303
+ success: Cola %{name} eliminada.
289
304
  show:
305
+ delete_confirm: "¿Eliminar permanentemente esta cola? Esto no se puede deshacer."
306
+ delete_queue: Eliminar cola
290
307
  depth: 'Profundidad:'
308
+ discard: Descartar
309
+ discard_confirm: "¿Descartar este mensaje?"
291
310
  empty: La cola está vacía
292
311
  headers:
312
+ actions: Acciones
293
313
  enqueued: Encolado
294
314
  id: ID
295
315
  payload: Carga útil
296
316
  reads: Lecturas
297
317
  vt: VT
318
+ message_discard_failed: No se pudo descartar el mensaje.
319
+ message_discarded: Mensaje descartado.
320
+ message_retried: Visibilidad del mensaje restablecida.
321
+ message_retry_failed: No se pudo reintentar el mensaje.
322
+ pause: Pausar
323
+ pause_confirm: "¿Pausar el procesamiento?"
298
324
  purge_confirm: "¿Purgar todos los mensajes?"
299
325
  purge_queue: Purgar cola
326
+ resume: Reanudar
327
+ retry: Reintentar
328
+ retry_confirm: "¿Restablecer tiempo de visibilidad y reintentar?"
300
329
  total: 'Total:'
301
330
  visible: 'Visible:'
302
331
  recurring_tasks:
@@ -1,6 +1,13 @@
1
1
  ---
2
2
  fi:
3
3
  pgbus:
4
+ dialogs:
5
+ cancel: Peruuta
6
+ confirm: Vahvista
7
+ confirm_title: Oletko varma?
8
+ delete: Poista
9
+ delete_title: Poista
10
+ ok: OK
4
11
  dashboard:
5
12
  processes_table:
6
13
  empty: Ei käynnissä olevia prosesseja
@@ -170,6 +177,10 @@ fi:
170
177
  timezone: 'Aikavyöhyke:'
171
178
  visible_at: 'Näkyvissä:'
172
179
  title: Jonotetut työt
180
+ discard: Hylkää
181
+ discard_confirm: Hylätä tämä viesti?
182
+ retry: Yritä uudelleen
183
+ retry_confirm: Nollaa näkyvyysaika ja yritä uudelleen?
173
184
  failed_table:
174
185
  discard: Hylkää
175
186
  discard_confirm: Hylätäänkö tämä työ?
@@ -280,23 +291,41 @@ fi:
280
291
  queue: Jono
281
292
  total_ever: Yhteensä koskaan
282
293
  visible: Näkyvissä
294
+ delete: Poista
295
+ delete_confirm: Poista jono %{name} pysyvästi? Tätä ei voi kumota.
283
296
  pause: Tauko
284
297
  pause_confirm: Keskeytä käsittely %{name} ajan?
285
298
  paused: Keskeytetty
286
299
  purge: Tyhjennä
287
300
  purge_confirm: Tyhjennä kaikki viestit %{name}:sta?
288
301
  resume: Jatka
302
+ destroy:
303
+ success: Jono %{name} poistettu.
289
304
  show:
305
+ delete_confirm: Poista tämä jono pysyvästi? Tätä ei voi kumota.
306
+ delete_queue: Poista jono
290
307
  depth: 'Syvyys:'
308
+ discard: Hylkää
309
+ discard_confirm: Hylätä tämä viesti?
291
310
  empty: Jono on tyhjä
292
311
  headers:
312
+ actions: Toiminnot
293
313
  enqueued: Jonoon lisätty
294
314
  id: ID
295
315
  payload: Kuorma
296
316
  reads: Lukukerrat
297
317
  vt: VT
318
+ message_discard_failed: Viestiä ei voitu hylätä.
319
+ message_discarded: Viesti hylätty.
320
+ message_retried: Viestin näkyvyys nollattu.
321
+ message_retry_failed: Viestiä ei voitu yrittää uudelleen.
322
+ pause: Tauko
323
+ pause_confirm: Keskeytetäänkö käsittely?
298
324
  purge_confirm: Tyhjennetäänkö kaikki viestit?
299
325
  purge_queue: Tyhjennä jono
326
+ resume: Jatka
327
+ retry: Yritä uudelleen
328
+ retry_confirm: Nollaa näkyvyysaika ja yritä uudelleen?
300
329
  total: 'Yhteensä:'
301
330
  visible: 'Näkyvissä:'
302
331
  recurring_tasks:
@@ -1,6 +1,13 @@
1
1
  ---
2
2
  fr:
3
3
  pgbus:
4
+ dialogs:
5
+ cancel: Annuler
6
+ confirm: Confirmer
7
+ confirm_title: "Êtes-vous sûr ?"
8
+ delete: Supprimer
9
+ delete_title: Supprimer
10
+ ok: OK
4
11
  dashboard:
5
12
  processes_table:
6
13
  empty: Aucun processus en cours d'exécution
@@ -170,6 +177,10 @@ fr:
170
177
  timezone: 'Fuseau horaire :'
171
178
  visible_at: 'Visible à :'
172
179
  title: Travaux en file d'attente
180
+ discard: Rejeter
181
+ discard_confirm: Rejeter ce message ?
182
+ retry: Réessayer
183
+ retry_confirm: Réinitialiser le délai de visibilité et réessayer ?
173
184
  failed_table:
174
185
  discard: Ignorer
175
186
  discard_confirm: Ignorer ce travail ?
@@ -280,23 +291,41 @@ fr:
280
291
  queue: File d'attente
281
292
  total_ever: Total jamais
282
293
  visible: Visible
294
+ delete: Supprimer
295
+ delete_confirm: Supprimer définitivement la file d'attente %{name} ? Cette action est irréversible.
283
296
  pause: Pause
284
297
  pause_confirm: Mettre en pause le traitement pour %{name} ?
285
298
  paused: En pause
286
299
  purge: Purger
287
300
  purge_confirm: Purger tous les messages de %{name} ?
288
301
  resume: Reprendre
302
+ destroy:
303
+ success: File d'attente %{name} supprimée.
289
304
  show:
305
+ delete_confirm: Supprimer définitivement cette file d'attente ? Cette action est irréversible.
306
+ delete_queue: Supprimer la file d'attente
290
307
  depth: 'Profondeur :'
308
+ discard: Rejeter
309
+ discard_confirm: Rejeter ce message ?
291
310
  empty: La file d'attente est vide
292
311
  headers:
312
+ actions: Actions
293
313
  enqueued: Enregistré
294
314
  id: ID
295
315
  payload: Charge utile
296
316
  reads: Lectures
297
317
  vt: VT
318
+ message_discard_failed: Impossible de rejeter le message.
319
+ message_discarded: Message rejeté.
320
+ message_retried: Visibilité du message réinitialisée.
321
+ message_retry_failed: Impossible de réessayer le message.
322
+ pause: Pause
323
+ pause_confirm: Mettre en pause le traitement ?
298
324
  purge_confirm: Purger tous les messages ?
299
325
  purge_queue: Purger la file d'attente
326
+ resume: Reprendre
327
+ retry: Réessayer
328
+ retry_confirm: Réinitialiser le délai de visibilité et réessayer ?
300
329
  total: 'Total :'
301
330
  visible: 'Visible :'
302
331
  recurring_tasks:
@@ -1,6 +1,13 @@
1
1
  ---
2
2
  it:
3
3
  pgbus:
4
+ dialogs:
5
+ cancel: Annulla
6
+ confirm: Conferma
7
+ confirm_title: Sei sicuro?
8
+ delete: Elimina
9
+ delete_title: Elimina
10
+ ok: OK
4
11
  dashboard:
5
12
  processes_table:
6
13
  empty: Nessun processo in esecuzione
@@ -170,6 +177,10 @@ it:
170
177
  timezone: 'Fuso orario:'
171
178
  visible_at: 'Visibile alle:'
172
179
  title: Lavori in coda
180
+ discard: Scarta
181
+ discard_confirm: Scartare questo messaggio?
182
+ retry: Riprova
183
+ retry_confirm: Reimpostare il timeout di visibilità e riprovare?
173
184
  failed_table:
174
185
  discard: Scarta
175
186
  discard_confirm: Scartare questo lavoro?
@@ -280,23 +291,41 @@ it:
280
291
  queue: Coda
281
292
  total_ever: Totale mai
282
293
  visible: Visibile
294
+ delete: Elimina
295
+ delete_confirm: Eliminare permanentemente la coda %{name}? Questa azione non può essere annullata.
283
296
  pause: Pausa
284
297
  pause_confirm: Mettere in pausa l'elaborazione per %{name}?
285
298
  paused: In pausa
286
299
  purge: Pulisci
287
300
  purge_confirm: Eliminare tutti i messaggi da %{name}?
288
301
  resume: Riprendi
302
+ destroy:
303
+ success: Coda %{name} eliminata.
289
304
  show:
305
+ delete_confirm: Eliminare permanentemente questa coda? Questa azione non può essere annullata.
306
+ delete_queue: Elimina coda
290
307
  depth: 'Profondità:'
308
+ discard: Scarta
309
+ discard_confirm: Scartare questo messaggio?
291
310
  empty: La coda è vuota
292
311
  headers:
312
+ actions: Azioni
293
313
  enqueued: In coda
294
314
  id: ID
295
315
  payload: Carico utile
296
316
  reads: Letture
297
317
  vt: VT
318
+ message_discard_failed: Impossibile scartare il messaggio.
319
+ message_discarded: Messaggio scartato.
320
+ message_retried: Visibilità del messaggio reimpostata.
321
+ message_retry_failed: Impossibile riprovare il messaggio.
322
+ pause: Pausa
323
+ pause_confirm: Mettere in pausa l'elaborazione?
298
324
  purge_confirm: Eliminare tutti i messaggi?
299
325
  purge_queue: Pulisci coda
326
+ resume: Riprendi
327
+ retry: Riprova
328
+ retry_confirm: Reimpostare il timeout di visibilità e riprovare?
300
329
  total: 'Totale:'
301
330
  visible: 'Visibile:'
302
331
  recurring_tasks:
@@ -1,6 +1,13 @@
1
1
  ---
2
2
  ja:
3
3
  pgbus:
4
+ dialogs:
5
+ cancel: キャンセル
6
+ confirm: 確認
7
+ confirm_title: よろしいですか?
8
+ delete: 削除
9
+ delete_title: 削除
10
+ ok: OK
4
11
  dashboard:
5
12
  processes_table:
6
13
  empty: 実行中のプロセスはありません
@@ -170,6 +177,10 @@ ja:
170
177
  timezone: タイムゾーン:
171
178
  visible_at: 表示可能日時:
172
179
  title: キューに入れられたジョブ
180
+ discard: 破棄
181
+ discard_confirm: このメッセージを破棄しますか?
182
+ retry: リトライ
183
+ retry_confirm: 可視性タイムアウトをリセットしてリトライしますか?
173
184
  failed_table:
174
185
  discard: 破棄
175
186
  discard_confirm: このジョブを破棄しますか?
@@ -280,23 +291,41 @@ ja:
280
291
  queue: キュー
281
292
  total_ever: 合計数
282
293
  visible: 表示中
294
+ delete: 削除
295
+ delete_confirm: キュー %{name} を完全に削除しますか?この操作は取り消せません。
283
296
  pause: 一時停止
284
297
  pause_confirm: "%{name} の処理を一時停止しますか?"
285
298
  paused: 一時停止中
286
299
  purge: パージ
287
300
  purge_confirm: "%{name} からすべてのメッセージを削除しますか?"
288
301
  resume: 再開
302
+ destroy:
303
+ success: キュー %{name} を削除しました。
289
304
  show:
305
+ delete_confirm: このキューを完全に削除しますか?この操作は取り消せません。
306
+ delete_queue: キューを削除
290
307
  depth: 深さ:
308
+ discard: 破棄
309
+ discard_confirm: このメッセージを破棄しますか?
291
310
  empty: キューは空です
292
311
  headers:
312
+ actions: アクション
293
313
  enqueued: エンキュー済み
294
314
  id: ID
295
315
  payload: ペイロード
296
316
  reads: 読み取り回数
297
317
  vt: VT
318
+ message_discard_failed: メッセージを破棄できませんでした。
319
+ message_discarded: メッセージを破棄しました。
320
+ message_retried: メッセージの可視性をリセットしました。
321
+ message_retry_failed: メッセージをリトライできませんでした。
322
+ pause: 一時停止
323
+ pause_confirm: 処理を一時停止しますか?
298
324
  purge_confirm: すべてのメッセージを削除しますか?
299
325
  purge_queue: キューをパージ
326
+ resume: 再開
327
+ retry: リトライ
328
+ retry_confirm: 可視性タイムアウトをリセットしてリトライしますか?
300
329
  total: 合計:
301
330
  visible: 表示中:
302
331
  recurring_tasks:
@@ -1,6 +1,13 @@
1
1
  ---
2
2
  nb:
3
3
  pgbus:
4
+ dialogs:
5
+ cancel: Avbryt
6
+ confirm: Bekreft
7
+ confirm_title: Er du sikker?
8
+ delete: Slett
9
+ delete_title: Slett
10
+ ok: OK
4
11
  dashboard:
5
12
  processes_table:
6
13
  empty: Ingen prosesser kjører
@@ -170,6 +177,10 @@ nb:
170
177
  timezone: 'Tidssone:'
171
178
  visible_at: 'Synlig fra:'
172
179
  title: Kølagte jobber
180
+ discard: Forkast
181
+ discard_confirm: Forkaste denne meldingen?
182
+ retry: Prøv igjen
183
+ retry_confirm: Tilbakestill synlighetstidsavbrudd og prøv igjen?
173
184
  failed_table:
174
185
  discard: Forkast
175
186
  discard_confirm: Forkast denne jobben?
@@ -280,23 +291,41 @@ nb:
280
291
  queue: Kø
281
292
  total_ever: Totalt noensinne
282
293
  visible: Synlig
294
+ delete: Slett
295
+ delete_confirm: Slette køen %{name} permanent? Dette kan ikke angres.
283
296
  pause: Pause
284
297
  pause_confirm: Pause behandling for %{name}?
285
298
  paused: Pauset
286
299
  purge: Rens
287
300
  purge_confirm: Rens alle meldinger fra %{name}?
288
301
  resume: Gjenoppta
302
+ destroy:
303
+ success: Køen %{name} slettet.
289
304
  show:
305
+ delete_confirm: Slette denne køen permanent? Dette kan ikke angres.
306
+ delete_queue: Slett kø
290
307
  depth: 'Dybde:'
308
+ discard: Forkast
309
+ discard_confirm: Forkaste denne meldingen?
291
310
  empty: Køen er tom
292
311
  headers:
312
+ actions: Handlinger
293
313
  enqueued: I kø
294
314
  id: ID
295
315
  payload: Innhold
296
316
  reads: Lesninger
297
317
  vt: VT
318
+ message_discard_failed: Kunne ikke forkaste meldingen.
319
+ message_discarded: Melding forkastet.
320
+ message_retried: Meldingens synlighet tilbakestilt.
321
+ message_retry_failed: Kunne ikke prøve meldingen igjen.
322
+ pause: Pause
323
+ pause_confirm: Pause behandling?
298
324
  purge_confirm: Rens alle meldinger?
299
325
  purge_queue: Rens kø
326
+ resume: Gjenoppta
327
+ retry: Prøv igjen
328
+ retry_confirm: Tilbakestill synlighetstidsavbrudd og prøv igjen?
300
329
  total: 'Totalt:'
301
330
  visible: 'Synlig:'
302
331
  recurring_tasks:
@@ -1,6 +1,13 @@
1
1
  ---
2
2
  nl:
3
3
  pgbus:
4
+ dialogs:
5
+ cancel: Annuleren
6
+ confirm: Bevestigen
7
+ confirm_title: Weet u het zeker?
8
+ delete: Verwijderen
9
+ delete_title: Verwijderen
10
+ ok: OK
4
11
  dashboard:
5
12
  processes_table:
6
13
  empty: Geen processen actief
@@ -170,6 +177,10 @@ nl:
170
177
  timezone: 'Tijdzone:'
171
178
  visible_at: 'Zichtbaar op:'
172
179
  title: Taken in de wachtrij
180
+ discard: Verwerpen
181
+ discard_confirm: Dit bericht verwerpen?
182
+ retry: Opnieuw proberen
183
+ retry_confirm: Zichtbaarheidstimeout resetten en opnieuw proberen?
173
184
  failed_table:
174
185
  discard: Verwijderen
175
186
  discard_confirm: Deze taak verwijderen?
@@ -280,23 +291,41 @@ nl:
280
291
  queue: Wachtrij
281
292
  total_ever: Totaal ooit
282
293
  visible: Zichtbaar
294
+ delete: Verwijderen
295
+ delete_confirm: Wachtrij %{name} permanent verwijderen? Dit kan niet ongedaan worden gemaakt.
283
296
  pause: Pauzeren
284
297
  pause_confirm: Verwerking pauzeren voor %{name}?
285
298
  paused: Gepauzeerd
286
299
  purge: Opschonen
287
300
  purge_confirm: Alle berichten verwijderen uit %{name}?
288
301
  resume: Hervatten
302
+ destroy:
303
+ success: Wachtrij %{name} verwijderd.
289
304
  show:
305
+ delete_confirm: Deze wachtrij permanent verwijderen? Dit kan niet ongedaan worden gemaakt.
306
+ delete_queue: Wachtrij verwijderen
290
307
  depth: 'Diepte:'
308
+ discard: Verwerpen
309
+ discard_confirm: Dit bericht verwerpen?
291
310
  empty: Wachtrij is leeg
292
311
  headers:
312
+ actions: Acties
293
313
  enqueued: In de wachtrij geplaatst
294
314
  id: ID
295
315
  payload: Inhoud
296
316
  reads: Lezingen
297
317
  vt: VT
318
+ message_discard_failed: Kon bericht niet verwerpen.
319
+ message_discarded: Bericht verworpen.
320
+ message_retried: Zichtbaarheid van bericht gereset.
321
+ message_retry_failed: Kon bericht niet opnieuw proberen.
322
+ pause: Pauzeren
323
+ pause_confirm: Verwerking pauzeren?
298
324
  purge_confirm: Alle berichten verwijderen?
299
325
  purge_queue: Wachtrij opschonen
326
+ resume: Hervatten
327
+ retry: Opnieuw proberen
328
+ retry_confirm: Zichtbaarheidstimeout resetten en opnieuw proberen?
300
329
  total: 'Totaal:'
301
330
  visible: 'Zichtbaar:'
302
331
  recurring_tasks:
@@ -1,6 +1,13 @@
1
1
  ---
2
2
  pt:
3
3
  pgbus:
4
+ dialogs:
5
+ cancel: Cancelar
6
+ confirm: Confirmar
7
+ confirm_title: Tem certeza?
8
+ delete: Excluir
9
+ delete_title: Excluir
10
+ ok: OK
4
11
  dashboard:
5
12
  processes_table:
6
13
  empty: Nenhum processo em execução
@@ -170,6 +177,10 @@ pt:
170
177
  timezone: 'Fuso horário:'
171
178
  visible_at: 'Visível em:'
172
179
  title: Trabalhos Enfileirados
180
+ discard: Descartar
181
+ discard_confirm: Descartar esta mensagem?
182
+ retry: Tentar novamente
183
+ retry_confirm: Redefinir tempo de visibilidade e tentar novamente?
173
184
  failed_table:
174
185
  discard: Descartar
175
186
  discard_confirm: Descartar este trabalho?
@@ -280,23 +291,41 @@ pt:
280
291
  queue: Fila
281
292
  total_ever: Total de todos os tempos
282
293
  visible: Visível
294
+ delete: Excluir
295
+ delete_confirm: Excluir permanentemente a fila %{name}? Esta ação não pode ser desfeita.
283
296
  pause: Pausar
284
297
  pause_confirm: Pausar processamento por %{name}?
285
298
  paused: Pausado
286
299
  purge: Limpar
287
300
  purge_confirm: Limpar todas as mensagens de %{name}?
288
301
  resume: Retomar
302
+ destroy:
303
+ success: Fila %{name} excluída.
289
304
  show:
305
+ delete_confirm: Excluir permanentemente esta fila? Esta ação não pode ser desfeita.
306
+ delete_queue: Excluir fila
290
307
  depth: 'Profundidade:'
308
+ discard: Descartar
309
+ discard_confirm: Descartar esta mensagem?
291
310
  empty: Fila está vazia
292
311
  headers:
312
+ actions: Ações
293
313
  enqueued: Enfileirado
294
314
  id: ID
295
315
  payload: Carga útil
296
316
  reads: Leituras
297
317
  vt: VT
318
+ message_discard_failed: Não foi possível descartar a mensagem.
319
+ message_discarded: Mensagem descartada.
320
+ message_retried: Visibilidade da mensagem redefinida.
321
+ message_retry_failed: Não foi possível tentar novamente a mensagem.
322
+ pause: Pausar
323
+ pause_confirm: Pausar processamento?
298
324
  purge_confirm: Limpar todas as mensagens?
299
325
  purge_queue: Limpar fila
326
+ resume: Retomar
327
+ retry: Tentar novamente
328
+ retry_confirm: Redefinir tempo de visibilidade e tentar novamente?
300
329
  total: 'Total:'
301
330
  visible: 'Visível:'
302
331
  recurring_tasks:
@@ -1,6 +1,13 @@
1
1
  ---
2
2
  sv:
3
3
  pgbus:
4
+ dialogs:
5
+ cancel: Avbryt
6
+ confirm: Bekräfta
7
+ confirm_title: Är du säker?
8
+ delete: Ta bort
9
+ delete_title: Ta bort
10
+ ok: OK
4
11
  dashboard:
5
12
  processes_table:
6
13
  empty: Inga processer körs
@@ -170,6 +177,10 @@ sv:
170
177
  timezone: 'Tidszon:'
171
178
  visible_at: 'Synlig vid:'
172
179
  title: Köade jobb
180
+ discard: Kassera
181
+ discard_confirm: Kassera detta meddelande?
182
+ retry: Försök igen
183
+ retry_confirm: Återställ synlighetstimeout och försök igen?
173
184
  failed_table:
174
185
  discard: Kassera
175
186
  discard_confirm: Kassera detta jobb?
@@ -280,23 +291,41 @@ sv:
280
291
  queue: Kö
281
292
  total_ever: Totalt någonsin
282
293
  visible: Synliga
294
+ delete: Ta bort
295
+ delete_confirm: Ta bort kön %{name} permanent? Detta kan inte ångras.
283
296
  pause: Pausa
284
297
  pause_confirm: Pausa bearbetning för %{name}?
285
298
  paused: Pausad
286
299
  purge: Rensa
287
300
  purge_confirm: Rensa alla meddelanden från %{name}?
288
301
  resume: Återuppta
302
+ destroy:
303
+ success: Kön %{name} borttagen.
289
304
  show:
305
+ delete_confirm: Ta bort denna kö permanent? Detta kan inte ångras.
306
+ delete_queue: Ta bort kö
290
307
  depth: 'Djup:'
308
+ discard: Kassera
309
+ discard_confirm: Kassera detta meddelande?
291
310
  empty: Kön är tom
292
311
  headers:
312
+ actions: Åtgärder
293
313
  enqueued: Inlagd
294
314
  id: ID
295
315
  payload: Innehåll
296
316
  reads: Läsningar
297
317
  vt: VT
318
+ message_discard_failed: Kunde inte kassera meddelandet.
319
+ message_discarded: Meddelande kasserat.
320
+ message_retried: Meddelandets synlighet återställd.
321
+ message_retry_failed: Kunde inte försöka igen med meddelandet.
322
+ pause: Pausa
323
+ pause_confirm: Pausa bearbetning?
298
324
  purge_confirm: Rensa alla meddelanden?
299
325
  purge_queue: Rensa kö
326
+ resume: Återuppta
327
+ retry: Försök igen
328
+ retry_confirm: Återställ synlighetstimeout och försök igen?
300
329
  total: 'Totalt:'
301
330
  visible: 'Synliga:'
302
331
  recurring_tasks:
data/config/routes.rb CHANGED
@@ -3,11 +3,13 @@
3
3
  Pgbus::Engine.routes.draw do
4
4
  root to: "dashboard#show"
5
5
 
6
- resources :queues, only: %i[index show], param: :name do
6
+ resources :queues, only: %i[index show destroy], param: :name do
7
7
  member do
8
8
  post :purge
9
9
  post :pause
10
10
  post :resume
11
+ post :retry_message
12
+ post :discard_message
11
13
  end
12
14
  end
13
15
 
data/lib/pgbus/client.rb CHANGED
@@ -210,8 +210,16 @@ module Pgbus
210
210
  synchronized { @pgmq.list_queues }
211
211
  end
212
212
 
213
- def purge_queue(queue_name)
214
- synchronized { @pgmq.purge_queue(config.queue_name(queue_name)) }
213
+ def purge_queue(queue_name, prefixed: true)
214
+ name = prefixed ? config.queue_name(queue_name) : queue_name
215
+ synchronized { @pgmq.purge_queue(name) }
216
+ end
217
+
218
+ def drop_queue(queue_name, prefixed: true)
219
+ name = prefixed ? config.queue_name(queue_name) : queue_name
220
+ result = synchronized { @pgmq.drop_queue(name) }
221
+ @queues_created.delete(name)
222
+ result
215
223
  end
216
224
 
217
225
  def purge_archive(queue_name, older_than:, batch_size: 1000)
data/lib/pgbus/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Pgbus
4
- VERSION = "0.2.6"
4
+ VERSION = "0.2.8"
5
5
  end
@@ -57,7 +57,11 @@ module Pgbus
57
57
  end
58
58
 
59
59
  def purge_queue(name)
60
- @client.purge_queue(name)
60
+ @client.purge_queue(name, prefixed: false)
61
+ end
62
+
63
+ def drop_queue(name)
64
+ @client.drop_queue(name, prefixed: false)
61
65
  end
62
66
 
63
67
  def pause_queue(name, reason: nil)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pgbus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.6
4
+ version: 0.2.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mikael Henriksson