pgbus 0.9.5 → 0.9.6
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 +4 -4
- data/Rakefile +56 -3
- data/app/controllers/pgbus/dead_letter_controller.rb +5 -1
- data/app/views/pgbus/dashboard/_recent_failures.html.erb +1 -1
- data/app/views/pgbus/dashboard/_stats_cards.html.erb +1 -0
- data/app/views/pgbus/dead_letter/_messages_table.html.erb +33 -1
- data/app/views/pgbus/insights/show.html.erb +1 -1
- data/app/views/pgbus/jobs/_failed_table.html.erb +1 -1
- data/app/views/pgbus/queues/show.html.erb +3 -0
- data/config/locales/da.yml +7 -0
- data/config/locales/de.yml +7 -0
- data/config/locales/en.yml +7 -0
- data/config/locales/es.yml +7 -0
- data/config/locales/fi.yml +7 -0
- data/config/locales/fr.yml +7 -0
- data/config/locales/it.yml +7 -0
- data/config/locales/ja.yml +7 -0
- data/config/locales/nb.yml +7 -0
- data/config/locales/nl.yml +7 -0
- data/config/locales/pt.yml +7 -0
- data/config/locales/sv.yml +7 -0
- data/lib/pgbus/configuration.rb +1 -1
- data/lib/pgbus/integrations/appsignal/dashboard.json +353 -0
- data/lib/pgbus/integrations/appsignal/dashboards/pgbus_health.json +224 -85
- data/lib/pgbus/integrations/appsignal/dashboards/pgbus_streams.json +154 -63
- data/lib/pgbus/integrations/appsignal/dashboards/pgbus_throughput.json +218 -79
- data/lib/pgbus/integrations/appsignal/probe.rb +17 -2
- data/lib/pgbus/integrations/appsignal.rb +17 -0
- data/lib/pgbus/version.rb +1 -1
- data/lib/pgbus/web/data_source.rb +21 -0
- metadata +2 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 71ef7f4e4fa290e422b8ce72402833f6a31fd7cb3d081aef8a4bfcc09fc467eb
|
|
4
|
+
data.tar.gz: 31a6522c809392316d28125b0fe8e972c6e18ca8b48510d8f891135b75c3e63c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7554038df6c2a70435a615a2594425ff05ce102953b445a7ad5f47ee3d69a7e81e32445f9e790d987d71b5b17aa807250ebadae6d50f191da3eb23c0676b8f98
|
|
7
|
+
data.tar.gz: fadb07428ddbaead22200de2ff1031ff924d75e4fa5cc7ea48307ab7a22e8cf84b7528ea3a69f25baab402732a7804046005e6c1b1fd33fced91823de4702896
|
data/Rakefile
CHANGED
|
@@ -11,6 +11,19 @@ require "rubocop/rake_task"
|
|
|
11
11
|
RuboCop::RakeTask.new
|
|
12
12
|
|
|
13
13
|
namespace :bench do
|
|
14
|
+
bench_dir = "benchmarks"
|
|
15
|
+
# Benches that need a real PostgreSQL/PGMQ (or boot Puma) — excluded from the
|
|
16
|
+
# no-DB unit suite that bench:all runs in CI.
|
|
17
|
+
db_benches = %w[connection_pool_bench integration_bench streams_bench].freeze
|
|
18
|
+
# The unit suite is every *_bench.rb that doesn't need a database, derived
|
|
19
|
+
# from the directory so a new unit bench is picked up automatically (kept in
|
|
20
|
+
# sync with bench:one, which globs the same files).
|
|
21
|
+
unit_benches = Dir["#{bench_dir}/*_bench.rb"]
|
|
22
|
+
.map { |f| File.basename(f, ".rb") }
|
|
23
|
+
.reject { |name| db_benches.include?(name) }
|
|
24
|
+
.sort
|
|
25
|
+
.freeze
|
|
26
|
+
|
|
14
27
|
desc "Run serialization benchmarks"
|
|
15
28
|
task :serialization do
|
|
16
29
|
ruby "benchmarks/serialization_bench.rb"
|
|
@@ -41,11 +54,51 @@ namespace :bench do
|
|
|
41
54
|
ruby "benchmarks/streams_bench.rb"
|
|
42
55
|
end
|
|
43
56
|
|
|
44
|
-
desc "Run
|
|
45
|
-
task
|
|
57
|
+
desc "Run a single benchmark: rake bench:one[client_bench]"
|
|
58
|
+
task :one, [:name] do |_t, args|
|
|
59
|
+
name = args[:name] or abort "Usage: rake bench:one[serialization_bench|client_bench|...]"
|
|
60
|
+
available = Dir["#{bench_dir}/*_bench.rb"].map { |f| File.basename(f, ".rb") }
|
|
61
|
+
abort "No such benchmark: #{name}. Available: #{available.sort.join(", ")}" unless available.include?(name)
|
|
62
|
+
ruby "#{bench_dir}/#{name}.rb"
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
desc "Run all unit-level benchmarks, save report to tmp/benchmarks/"
|
|
66
|
+
task :all do
|
|
67
|
+
require "fileutils"
|
|
68
|
+
require "open3"
|
|
69
|
+
require "rbconfig"
|
|
70
|
+
FileUtils.mkdir_p("tmp/benchmarks")
|
|
71
|
+
|
|
72
|
+
# Run each bench under the SAME Ruby + gemset as this Rake process, not a
|
|
73
|
+
# bare `ruby` from PATH — otherwise before/after numbers are unreliable and
|
|
74
|
+
# gem loading can break under a different interpreter.
|
|
75
|
+
ruby = RbConfig.ruby
|
|
76
|
+
failed = []
|
|
77
|
+
|
|
78
|
+
File.open("tmp/benchmarks/unit.txt", "w") do |report|
|
|
79
|
+
unit_benches.each do |name|
|
|
80
|
+
file = "#{bench_dir}/#{name}.rb"
|
|
81
|
+
header = "\n### #{file} ###"
|
|
82
|
+
puts "\e[1;35m#{header}\e[0m"
|
|
83
|
+
report.puts header
|
|
84
|
+
|
|
85
|
+
result, status = Open3.capture2e(ruby, file)
|
|
86
|
+
puts result
|
|
87
|
+
report.puts result.gsub(/\e\[[0-9;]*m/, "")
|
|
88
|
+
|
|
89
|
+
unless status.success?
|
|
90
|
+
failed << file
|
|
91
|
+
report.puts "!!! FAILED (exit #{status.exitstatus})"
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
puts "\nSaved report to tmp/benchmarks/unit.txt"
|
|
97
|
+
abort "\nBenchmark(s) failed: #{failed.join(", ")}" if failed.any?
|
|
98
|
+
end
|
|
46
99
|
end
|
|
47
100
|
|
|
48
|
-
desc "Run all benchmarks"
|
|
101
|
+
desc "Run all benchmarks (alias for bench:all)"
|
|
49
102
|
task bench: "bench:all"
|
|
50
103
|
|
|
51
104
|
desc "Build gem and verify contents"
|
|
@@ -3,7 +3,11 @@
|
|
|
3
3
|
module Pgbus
|
|
4
4
|
class DeadLetterController < ApplicationController
|
|
5
5
|
def index
|
|
6
|
-
@
|
|
6
|
+
@page = page_param
|
|
7
|
+
@per_page = per_page
|
|
8
|
+
@messages = data_source.dlq_messages(page: @page, per_page: @per_page)
|
|
9
|
+
@total_count = data_source.dlq_total_count
|
|
10
|
+
@total_pages = (@total_count.to_f / @per_page).ceil
|
|
7
11
|
render_frame("pgbus/dead_letter/messages_table") if params[:frame] == "list"
|
|
8
12
|
end
|
|
9
13
|
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
<% @recent_failures.each do |f| %>
|
|
20
20
|
<tr>
|
|
21
21
|
<td data-label="Queue" class="px-4 py-3 text-sm text-gray-700"><%= f["queue_name"] %></td>
|
|
22
|
-
<td data-label="Error" class="px-4 py-3 text-sm text-red-600 truncate max-w-xs"><%= f["error_class"] %>: <%= truncate(f["error_message"].to_s, length: 60) %></td>
|
|
22
|
+
<td data-label="Error" class="px-4 py-3 text-sm text-red-600 truncate max-w-xs" title="<%= f["error_class"] %>: <%= f["error_message"] %>"><%= f["error_class"] %>: <%= truncate(f["error_message"].to_s, length: 60) %></td>
|
|
23
23
|
<td data-label="Time" class="px-4 py-3 text-sm text-gray-500"><%= pgbus_time_ago(f["failed_at"]) %></td>
|
|
24
24
|
</tr>
|
|
25
25
|
<% end %>
|
|
@@ -31,6 +31,7 @@
|
|
|
31
31
|
<p class="mt-1 text-3xl font-semibold <%= (@stats[:failed_count] + @stats[:dlq_depth]) > 0 ? 'text-red-600 dark:text-red-400' : 'text-gray-900 dark:text-white' %>">
|
|
32
32
|
<%= @stats[:failed_count] %> / <%= @stats[:dlq_depth] %>
|
|
33
33
|
</p>
|
|
34
|
+
<p class="text-xs text-gray-400 dark:text-gray-500"><%= t("pgbus.dashboard.stats_cards.failed_dlq_labels") %></p>
|
|
34
35
|
</div>
|
|
35
36
|
|
|
36
37
|
<div class="rounded-lg bg-white dark:bg-gray-800 p-5 shadow ring-1 ring-gray-200 dark:ring-gray-700">
|
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
<turbo-frame id="dlq-messages" data-auto-refresh data-src="<%= pgbus.dead_letter_index_path(frame: 'list') %>">
|
|
1
|
+
<turbo-frame id="dlq-messages" data-auto-refresh data-src="<%= pgbus.dead_letter_index_path(frame: 'list', page: @page) %>">
|
|
2
|
+
<%# Count badge lives inside the frame so it refreshes in lockstep with the table. %>
|
|
3
|
+
<% if @total_count && @total_count > 0 %>
|
|
4
|
+
<p class="mb-3 text-sm text-gray-500 dark:text-gray-400">
|
|
5
|
+
<span class="inline-flex items-center rounded-full bg-red-100 dark:bg-red-900 px-2.5 py-0.5 text-sm font-medium text-red-800 dark:text-red-200"><%= @total_count %></span>
|
|
6
|
+
<%= t("pgbus.dead_letter.messages_table.total_label") %>
|
|
7
|
+
</p>
|
|
8
|
+
<% end %>
|
|
2
9
|
<%# Bulk form outside table to avoid nested form issues %>
|
|
3
10
|
<form id="bulk-discard-dlq-form" action="<%= pgbus.discard_selected_dead_letter_index_path %>" method="post" data-turbo-frame="_top" class="hidden">
|
|
4
11
|
<%= hidden_field_tag :authenticity_token, form_authenticity_token %>
|
|
@@ -91,5 +98,30 @@
|
|
|
91
98
|
<% end %>
|
|
92
99
|
</tbody>
|
|
93
100
|
</table>
|
|
101
|
+
<% if @total_count && @total_count > 0 %>
|
|
102
|
+
<div class="flex items-center justify-between border-t border-gray-200 dark:border-gray-700 px-4 py-3">
|
|
103
|
+
<p class="text-sm text-gray-500 dark:text-gray-400">
|
|
104
|
+
<% from = (@page - 1) * @per_page + 1 %>
|
|
105
|
+
<% to = [from + @messages.size - 1, @total_count].min %>
|
|
106
|
+
<%= t("pgbus.helpers.pagination.showing", from: from, to: to, total: @total_count) %>
|
|
107
|
+
</p>
|
|
108
|
+
<% if @total_pages > 1 %>
|
|
109
|
+
<nav class="inline-flex rounded-lg shadow-sm" role="navigation" aria-label="Pagination">
|
|
110
|
+
<% if @page > 1 %>
|
|
111
|
+
<%= link_to t("pgbus.helpers.pagination.previous"), pgbus.dead_letter_index_path(page: @page - 1),
|
|
112
|
+
class: "px-3 py-1.5 text-xs font-medium border border-gray-300 dark:border-gray-600 rounded-l-lg bg-white dark:bg-gray-800 text-gray-700 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-gray-700" %>
|
|
113
|
+
<% else %>
|
|
114
|
+
<span class="px-3 py-1.5 text-xs font-medium border border-gray-300 dark:border-gray-600 rounded-l-lg bg-gray-100 dark:bg-gray-900 text-gray-400 dark:text-gray-600 cursor-not-allowed"><%= t("pgbus.helpers.pagination.previous") %></span>
|
|
115
|
+
<% end %>
|
|
116
|
+
<% if @page < @total_pages %>
|
|
117
|
+
<%= link_to t("pgbus.helpers.pagination.next"), pgbus.dead_letter_index_path(page: @page + 1),
|
|
118
|
+
class: "-ml-px px-3 py-1.5 text-xs font-medium border border-gray-300 dark:border-gray-600 rounded-r-lg bg-white dark:bg-gray-800 text-gray-700 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-gray-700" %>
|
|
119
|
+
<% else %>
|
|
120
|
+
<span class="-ml-px px-3 py-1.5 text-xs font-medium border border-gray-300 dark:border-gray-600 rounded-r-lg bg-gray-100 dark:bg-gray-900 text-gray-400 dark:text-gray-600 cursor-not-allowed"><%= t("pgbus.helpers.pagination.next") %></span>
|
|
121
|
+
<% end %>
|
|
122
|
+
</nav>
|
|
123
|
+
<% end %>
|
|
124
|
+
</div>
|
|
125
|
+
<% end %>
|
|
94
126
|
</div>
|
|
95
127
|
</turbo-frame>
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
<p class="mt-1 text-sm text-gray-500 dark:text-gray-400"><%= t("pgbus.insights.show.description_html", range: pgbus_time_range_label(@minutes)) %></p>
|
|
5
5
|
</div>
|
|
6
6
|
<nav class="inline-flex rounded-lg shadow-sm" role="group" aria-label="Time range">
|
|
7
|
-
<% ranges = [["1h", 60], ["24h", 1440], ["7d", 10_080], ["30d", 43_200]] %>
|
|
7
|
+
<% ranges = [["1h", 60], ["4h", 240], ["24h", 1440], ["7d", 10_080], ["30d", 43_200]] %>
|
|
8
8
|
<% ranges.each_with_index do |(label, mins), i| %>
|
|
9
9
|
<%
|
|
10
10
|
active = @minutes == mins
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
<%= link_to f["id"], pgbus.job_path(f["id"]), class: "text-indigo-600 hover:text-indigo-500", data: { turbo_frame: "_top" } %>
|
|
52
52
|
</td>
|
|
53
53
|
<td data-label="Queue" class="px-4 py-3 text-sm text-gray-700"><%= f["queue_name"] %></td>
|
|
54
|
-
<td data-label="Error" class="px-4 py-3 text-sm text-red-600 max-w-sm truncate">
|
|
54
|
+
<td data-label="Error" class="px-4 py-3 text-sm text-red-600 max-w-sm truncate" title="<%= f["error_class"] %>: <%= f["error_message"] %>">
|
|
55
55
|
<span class="font-medium"><%= f["error_class"] %></span>: <%= truncate(f["error_message"].to_s, length: 80) %>
|
|
56
56
|
</td>
|
|
57
57
|
<td data-label="Retries" class="px-4 py-3 text-sm text-gray-500"><%= f["retry_count"] %></td>
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
<div class="mb-3">
|
|
2
|
+
<%= link_to "← #{t("pgbus.queues.show.back")}", pgbus.queues_path, class: "text-sm text-indigo-600 hover:text-indigo-500 dark:text-indigo-400" %>
|
|
3
|
+
</div>
|
|
1
4
|
<div class="flex items-center justify-between mb-6">
|
|
2
5
|
<div>
|
|
3
6
|
<h1 class="text-2xl font-bold text-gray-900 dark:text-white">
|
data/config/locales/da.yml
CHANGED
|
@@ -84,6 +84,7 @@ da:
|
|
|
84
84
|
stats_cards:
|
|
85
85
|
enqueued: Sat i kø
|
|
86
86
|
failed_dlq: Mislykkedes / DLQ
|
|
87
|
+
failed_dlq_labels: Fejlet / Dead Lettered
|
|
87
88
|
processes: Processer
|
|
88
89
|
queues: Køer
|
|
89
90
|
recurring: Gentagende
|
|
@@ -126,6 +127,7 @@ da:
|
|
|
126
127
|
queue: 'Kø:'
|
|
127
128
|
visible_at: 'Synlig ved:'
|
|
128
129
|
retry: Forsøg igen
|
|
130
|
+
total_label: beskeder i dead letter-kø
|
|
129
131
|
show:
|
|
130
132
|
back: Tilbage til DLQ
|
|
131
133
|
discard: Kassér
|
|
@@ -225,6 +227,10 @@ da:
|
|
|
225
227
|
bulk_select_all: Vælg alle
|
|
226
228
|
bulk_select_row: Vælg %{id}
|
|
227
229
|
bulk_selected: valgt
|
|
230
|
+
pagination:
|
|
231
|
+
next: Næste
|
|
232
|
+
previous: Forrige
|
|
233
|
+
showing: Viser %{from}–%{to} af %{total}
|
|
228
234
|
paused_badge: Pause
|
|
229
235
|
queue_badge:
|
|
230
236
|
dlq: DLQ
|
|
@@ -477,6 +483,7 @@ da:
|
|
|
477
483
|
resume: Genoptag
|
|
478
484
|
show:
|
|
479
485
|
arguments: Argumenter
|
|
486
|
+
back: Tilbage til køer
|
|
480
487
|
delete_confirm: Slet denne kø permanent? Dette kan ikke fortrydes.
|
|
481
488
|
delete_queue: Slet kø
|
|
482
489
|
depth: 'Dybde:'
|
data/config/locales/de.yml
CHANGED
|
@@ -84,6 +84,7 @@ de:
|
|
|
84
84
|
stats_cards:
|
|
85
85
|
enqueued: Eingereiht
|
|
86
86
|
failed_dlq: Fehlgeschlagen / DLQ
|
|
87
|
+
failed_dlq_labels: Fehlgeschlagen / Dead Lettered
|
|
87
88
|
processes: Prozesse
|
|
88
89
|
queues: Warteschlangen
|
|
89
90
|
recurring: Wiederkehrend
|
|
@@ -126,6 +127,7 @@ de:
|
|
|
126
127
|
queue: 'Warteschlange:'
|
|
127
128
|
visible_at: 'Sichtbar um:'
|
|
128
129
|
retry: Erneut versuchen
|
|
130
|
+
total_label: Nachrichten in der Dead-Letter-Warteschlange
|
|
129
131
|
show:
|
|
130
132
|
back: Zurück zur DLQ
|
|
131
133
|
discard: Verwerfen
|
|
@@ -225,6 +227,10 @@ de:
|
|
|
225
227
|
bulk_select_all: Alle auswählen
|
|
226
228
|
bulk_select_row: "%{id} auswählen"
|
|
227
229
|
bulk_selected: ausgewählt
|
|
230
|
+
pagination:
|
|
231
|
+
next: Weiter
|
|
232
|
+
previous: Zurück
|
|
233
|
+
showing: Zeige %{from}–%{to} von %{total}
|
|
228
234
|
paused_badge: Pausiert
|
|
229
235
|
queue_badge:
|
|
230
236
|
dlq: DLQ
|
|
@@ -477,6 +483,7 @@ de:
|
|
|
477
483
|
resume: Fortsetzen
|
|
478
484
|
show:
|
|
479
485
|
arguments: Argumente
|
|
486
|
+
back: Zurück zu Warteschlangen
|
|
480
487
|
delete_confirm: Diese Warteschlange dauerhaft löschen? Dies kann nicht rückgängig gemacht werden.
|
|
481
488
|
delete_queue: Warteschlange löschen
|
|
482
489
|
depth: 'Tiefe:'
|
data/config/locales/en.yml
CHANGED
|
@@ -84,6 +84,7 @@ en:
|
|
|
84
84
|
stats_cards:
|
|
85
85
|
enqueued: Enqueued
|
|
86
86
|
failed_dlq: Failed / DLQ
|
|
87
|
+
failed_dlq_labels: Failed / Dead Lettered
|
|
87
88
|
processes: Processes
|
|
88
89
|
queues: Queues
|
|
89
90
|
recurring: Recurring
|
|
@@ -126,6 +127,7 @@ en:
|
|
|
126
127
|
queue: 'Queue:'
|
|
127
128
|
visible_at: 'Visible at:'
|
|
128
129
|
retry: Retry
|
|
130
|
+
total_label: messages in dead letter queue
|
|
129
131
|
show:
|
|
130
132
|
back: Back to DLQ
|
|
131
133
|
discard: Discard
|
|
@@ -225,6 +227,10 @@ en:
|
|
|
225
227
|
bulk_select_all: Select all
|
|
226
228
|
bulk_select_row: Select %{id}
|
|
227
229
|
bulk_selected: selected
|
|
230
|
+
pagination:
|
|
231
|
+
next: Next
|
|
232
|
+
previous: Previous
|
|
233
|
+
showing: Showing %{from}–%{to} of %{total}
|
|
228
234
|
paused_badge: Paused
|
|
229
235
|
queue_badge:
|
|
230
236
|
dlq: DLQ
|
|
@@ -477,6 +483,7 @@ en:
|
|
|
477
483
|
resume: Resume
|
|
478
484
|
show:
|
|
479
485
|
arguments: Arguments
|
|
486
|
+
back: Back to Queues
|
|
480
487
|
delete_confirm: Permanently delete this queue? This cannot be undone.
|
|
481
488
|
delete_queue: Delete Queue
|
|
482
489
|
depth: 'Depth:'
|
data/config/locales/es.yml
CHANGED
|
@@ -84,6 +84,7 @@ es:
|
|
|
84
84
|
stats_cards:
|
|
85
85
|
enqueued: Encolado
|
|
86
86
|
failed_dlq: Fallidos / DLQ
|
|
87
|
+
failed_dlq_labels: Fallidos / Dead Lettered
|
|
87
88
|
processes: Procesos
|
|
88
89
|
queues: Colas
|
|
89
90
|
recurring: Recurrente
|
|
@@ -126,6 +127,7 @@ es:
|
|
|
126
127
|
queue: 'Cola:'
|
|
127
128
|
visible_at: 'Visible en:'
|
|
128
129
|
retry: Reintentar
|
|
130
|
+
total_label: mensajes en la cola de mensajes fallidos
|
|
129
131
|
show:
|
|
130
132
|
back: Volver a DLQ
|
|
131
133
|
discard: Descartar
|
|
@@ -225,6 +227,10 @@ es:
|
|
|
225
227
|
bulk_select_all: Seleccionar todo
|
|
226
228
|
bulk_select_row: Seleccionar %{id}
|
|
227
229
|
bulk_selected: seleccionado
|
|
230
|
+
pagination:
|
|
231
|
+
next: Siguiente
|
|
232
|
+
previous: Anterior
|
|
233
|
+
showing: Mostrando %{from}–%{to} de %{total}
|
|
228
234
|
paused_badge: Pausado
|
|
229
235
|
queue_badge:
|
|
230
236
|
dlq: DLQ
|
|
@@ -477,6 +483,7 @@ es:
|
|
|
477
483
|
resume: Reanudar
|
|
478
484
|
show:
|
|
479
485
|
arguments: Argumentos
|
|
486
|
+
back: Volver a colas
|
|
480
487
|
delete_confirm: "¿Eliminar permanentemente esta cola? Esto no se puede deshacer."
|
|
481
488
|
delete_queue: Eliminar cola
|
|
482
489
|
depth: 'Profundidad:'
|
data/config/locales/fi.yml
CHANGED
|
@@ -84,6 +84,7 @@ fi:
|
|
|
84
84
|
stats_cards:
|
|
85
85
|
enqueued: Lisätty jonoon
|
|
86
86
|
failed_dlq: Epäonnistuneet / DLQ
|
|
87
|
+
failed_dlq_labels: Epäonnistuneet / Dead Lettered
|
|
87
88
|
processes: Prosessit
|
|
88
89
|
queues: Jonot
|
|
89
90
|
recurring: Toistuva
|
|
@@ -126,6 +127,7 @@ fi:
|
|
|
126
127
|
queue: 'Jono:'
|
|
127
128
|
visible_at: 'Näkyvissä klo:'
|
|
128
129
|
retry: Yritä uudelleen
|
|
130
|
+
total_label: viestiä dead letter -jonossa
|
|
129
131
|
show:
|
|
130
132
|
back: Takaisin DLQ:hon
|
|
131
133
|
discard: Hylkää
|
|
@@ -225,6 +227,10 @@ fi:
|
|
|
225
227
|
bulk_select_all: Valitse kaikki
|
|
226
228
|
bulk_select_row: Valitse %{id}
|
|
227
229
|
bulk_selected: valittu
|
|
230
|
+
pagination:
|
|
231
|
+
next: Seuraava
|
|
232
|
+
previous: Edellinen
|
|
233
|
+
showing: Näytetään %{from}–%{to} / %{total}
|
|
228
234
|
paused_badge: Tauolla
|
|
229
235
|
queue_badge:
|
|
230
236
|
dlq: DLQ
|
|
@@ -477,6 +483,7 @@ fi:
|
|
|
477
483
|
resume: Jatka
|
|
478
484
|
show:
|
|
479
485
|
arguments: Argumentit
|
|
486
|
+
back: Takaisin jonoihin
|
|
480
487
|
delete_confirm: Poista tämä jono pysyvästi? Tätä ei voi kumota.
|
|
481
488
|
delete_queue: Poista jono
|
|
482
489
|
depth: 'Syvyys:'
|
data/config/locales/fr.yml
CHANGED
|
@@ -84,6 +84,7 @@ fr:
|
|
|
84
84
|
stats_cards:
|
|
85
85
|
enqueued: Enregistré
|
|
86
86
|
failed_dlq: Échoué / DLQ
|
|
87
|
+
failed_dlq_labels: Échoués / Dead Lettered
|
|
87
88
|
processes: Processus
|
|
88
89
|
queues: Files d'attente
|
|
89
90
|
recurring: Récurrent
|
|
@@ -126,6 +127,7 @@ fr:
|
|
|
126
127
|
queue: 'File d''attente :'
|
|
127
128
|
visible_at: 'Visible à :'
|
|
128
129
|
retry: Réessayer
|
|
130
|
+
total_label: messages dans la file de lettres mortes
|
|
129
131
|
show:
|
|
130
132
|
back: Retour à la DLQ
|
|
131
133
|
discard: Ignorer
|
|
@@ -225,6 +227,10 @@ fr:
|
|
|
225
227
|
bulk_select_all: Tout sélectionner
|
|
226
228
|
bulk_select_row: Sélectionner %{id}
|
|
227
229
|
bulk_selected: sélectionné
|
|
230
|
+
pagination:
|
|
231
|
+
next: Suivant
|
|
232
|
+
previous: Précédent
|
|
233
|
+
showing: Affichage de %{from}–%{to} sur %{total}
|
|
228
234
|
paused_badge: En pause
|
|
229
235
|
queue_badge:
|
|
230
236
|
dlq: DLQ
|
|
@@ -477,6 +483,7 @@ fr:
|
|
|
477
483
|
resume: Reprendre
|
|
478
484
|
show:
|
|
479
485
|
arguments: Arguments
|
|
486
|
+
back: Retour aux files d'attente
|
|
480
487
|
delete_confirm: Supprimer définitivement cette file d'attente ? Cette action est irréversible.
|
|
481
488
|
delete_queue: Supprimer la file d'attente
|
|
482
489
|
depth: 'Profondeur :'
|
data/config/locales/it.yml
CHANGED
|
@@ -84,6 +84,7 @@ it:
|
|
|
84
84
|
stats_cards:
|
|
85
85
|
enqueued: In coda
|
|
86
86
|
failed_dlq: Falliti / DLQ
|
|
87
|
+
failed_dlq_labels: Falliti / Dead Lettered
|
|
87
88
|
processes: Processi
|
|
88
89
|
queues: Code
|
|
89
90
|
recurring: Ricorrente
|
|
@@ -126,6 +127,7 @@ it:
|
|
|
126
127
|
queue: 'Coda:'
|
|
127
128
|
visible_at: 'Visibile alle:'
|
|
128
129
|
retry: Riprova
|
|
130
|
+
total_label: messaggi nella coda dei messaggi non recapitati
|
|
129
131
|
show:
|
|
130
132
|
back: Torna a DLQ
|
|
131
133
|
discard: Scarta
|
|
@@ -225,6 +227,10 @@ it:
|
|
|
225
227
|
bulk_select_all: Seleziona tutto
|
|
226
228
|
bulk_select_row: Seleziona %{id}
|
|
227
229
|
bulk_selected: selezionato
|
|
230
|
+
pagination:
|
|
231
|
+
next: Avanti
|
|
232
|
+
previous: Indietro
|
|
233
|
+
showing: Visualizzazione %{from}–%{to} di %{total}
|
|
228
234
|
paused_badge: In pausa
|
|
229
235
|
queue_badge:
|
|
230
236
|
dlq: DLQ
|
|
@@ -477,6 +483,7 @@ it:
|
|
|
477
483
|
resume: Riprendi
|
|
478
484
|
show:
|
|
479
485
|
arguments: Argomenti
|
|
486
|
+
back: Torna alle code
|
|
480
487
|
delete_confirm: Eliminare permanentemente questa coda? Questa azione non può essere annullata.
|
|
481
488
|
delete_queue: Elimina coda
|
|
482
489
|
depth: 'Profondità:'
|
data/config/locales/ja.yml
CHANGED
|
@@ -84,6 +84,7 @@ ja:
|
|
|
84
84
|
stats_cards:
|
|
85
85
|
enqueued: キューに追加済み
|
|
86
86
|
failed_dlq: 失敗 / DLQ
|
|
87
|
+
failed_dlq_labels: 失敗 / Dead Lettered
|
|
87
88
|
processes: プロセス
|
|
88
89
|
queues: キュー
|
|
89
90
|
recurring: 繰り返し
|
|
@@ -126,6 +127,7 @@ ja:
|
|
|
126
127
|
queue: 'キュー:'
|
|
127
128
|
visible_at: '表示日時:'
|
|
128
129
|
retry: 再試行
|
|
130
|
+
total_label: デッドレターキュー内のメッセージ
|
|
129
131
|
show:
|
|
130
132
|
back: DLQに戻る
|
|
131
133
|
discard: 破棄
|
|
@@ -225,6 +227,10 @@ ja:
|
|
|
225
227
|
bulk_select_all: すべて選択
|
|
226
228
|
bulk_select_row: "%{id}を選択"
|
|
227
229
|
bulk_selected: 選択済み
|
|
230
|
+
pagination:
|
|
231
|
+
next: 次へ
|
|
232
|
+
previous: 前へ
|
|
233
|
+
showing: "%{total} 件中 %{from}–%{to} 件を表示"
|
|
228
234
|
paused_badge: 一時停止中
|
|
229
235
|
queue_badge:
|
|
230
236
|
dlq: DLQ
|
|
@@ -477,6 +483,7 @@ ja:
|
|
|
477
483
|
resume: 再開
|
|
478
484
|
show:
|
|
479
485
|
arguments: 引数
|
|
486
|
+
back: キューに戻る
|
|
480
487
|
delete_confirm: このキューを完全に削除しますか?この操作は取り消せません。
|
|
481
488
|
delete_queue: キューを削除
|
|
482
489
|
depth: 深さ:
|
data/config/locales/nb.yml
CHANGED
|
@@ -84,6 +84,7 @@ nb:
|
|
|
84
84
|
stats_cards:
|
|
85
85
|
enqueued: I kø
|
|
86
86
|
failed_dlq: Mislyktes / DLQ
|
|
87
|
+
failed_dlq_labels: Mislyktes / Dead Lettered
|
|
87
88
|
processes: Prosesser
|
|
88
89
|
queues: Køer
|
|
89
90
|
recurring: Gjentakende
|
|
@@ -126,6 +127,7 @@ nb:
|
|
|
126
127
|
queue: 'Kø:'
|
|
127
128
|
visible_at: 'Synlig ved:'
|
|
128
129
|
retry: Prøv igjen
|
|
130
|
+
total_label: meldinger i dead letter-kø
|
|
129
131
|
show:
|
|
130
132
|
back: Tilbake til DLQ
|
|
131
133
|
discard: Forkast
|
|
@@ -225,6 +227,10 @@ nb:
|
|
|
225
227
|
bulk_select_all: Velg alle
|
|
226
228
|
bulk_select_row: Velg %{id}
|
|
227
229
|
bulk_selected: valgt
|
|
230
|
+
pagination:
|
|
231
|
+
next: Neste
|
|
232
|
+
previous: Forrige
|
|
233
|
+
showing: Viser %{from}–%{to} av %{total}
|
|
228
234
|
paused_badge: Pause
|
|
229
235
|
queue_badge:
|
|
230
236
|
dlq: DLQ
|
|
@@ -477,6 +483,7 @@ nb:
|
|
|
477
483
|
resume: Gjenoppta
|
|
478
484
|
show:
|
|
479
485
|
arguments: Argumenter
|
|
486
|
+
back: Tilbake til køer
|
|
480
487
|
delete_confirm: Slette denne køen permanent? Dette kan ikke angres.
|
|
481
488
|
delete_queue: Slett kø
|
|
482
489
|
depth: 'Dybde:'
|
data/config/locales/nl.yml
CHANGED
|
@@ -84,6 +84,7 @@ nl:
|
|
|
84
84
|
stats_cards:
|
|
85
85
|
enqueued: In de wachtrij geplaatst
|
|
86
86
|
failed_dlq: Mislukt / DLQ
|
|
87
|
+
failed_dlq_labels: Mislukt / Dead Lettered
|
|
87
88
|
processes: Processen
|
|
88
89
|
queues: Wachtrijen
|
|
89
90
|
recurring: Terugkerend
|
|
@@ -126,6 +127,7 @@ nl:
|
|
|
126
127
|
queue: 'Wachtrij:'
|
|
127
128
|
visible_at: 'Zichtbaar op:'
|
|
128
129
|
retry: Opnieuw proberen
|
|
130
|
+
total_label: berichten in dead letter-wachtrij
|
|
129
131
|
show:
|
|
130
132
|
back: Terug naar DLQ
|
|
131
133
|
discard: Verwerpen
|
|
@@ -225,6 +227,10 @@ nl:
|
|
|
225
227
|
bulk_select_all: Alles selecteren
|
|
226
228
|
bulk_select_row: Selecteer %{id}
|
|
227
229
|
bulk_selected: geselecteerd
|
|
230
|
+
pagination:
|
|
231
|
+
next: Volgende
|
|
232
|
+
previous: Vorige
|
|
233
|
+
showing: "%{from}–%{to} van %{total} weergegeven"
|
|
228
234
|
paused_badge: Gepauzeerd
|
|
229
235
|
queue_badge:
|
|
230
236
|
dlq: DLQ
|
|
@@ -477,6 +483,7 @@ nl:
|
|
|
477
483
|
resume: Hervatten
|
|
478
484
|
show:
|
|
479
485
|
arguments: Argumenten
|
|
486
|
+
back: Terug naar wachtrijen
|
|
480
487
|
delete_confirm: Deze wachtrij permanent verwijderen? Dit kan niet ongedaan worden gemaakt.
|
|
481
488
|
delete_queue: Wachtrij verwijderen
|
|
482
489
|
depth: 'Diepte:'
|
data/config/locales/pt.yml
CHANGED
|
@@ -84,6 +84,7 @@ pt:
|
|
|
84
84
|
stats_cards:
|
|
85
85
|
enqueued: Enfileirado
|
|
86
86
|
failed_dlq: Falhou / DLQ
|
|
87
|
+
failed_dlq_labels: Falhados / Dead Lettered
|
|
87
88
|
processes: Processos
|
|
88
89
|
queues: Filas
|
|
89
90
|
recurring: Recorrente
|
|
@@ -126,6 +127,7 @@ pt:
|
|
|
126
127
|
queue: 'Fila:'
|
|
127
128
|
visible_at: 'Visível em:'
|
|
128
129
|
retry: Tentar novamente
|
|
130
|
+
total_label: mensagens na fila de mensagens mortas
|
|
129
131
|
show:
|
|
130
132
|
back: Voltar para DLQ
|
|
131
133
|
discard: Descartar
|
|
@@ -225,6 +227,10 @@ pt:
|
|
|
225
227
|
bulk_select_all: Selecionar todos
|
|
226
228
|
bulk_select_row: Selecionar %{id}
|
|
227
229
|
bulk_selected: selecionado
|
|
230
|
+
pagination:
|
|
231
|
+
next: Próximo
|
|
232
|
+
previous: Anterior
|
|
233
|
+
showing: Mostrando %{from}–%{to} de %{total}
|
|
228
234
|
paused_badge: Pausado
|
|
229
235
|
queue_badge:
|
|
230
236
|
dlq: DLQ
|
|
@@ -477,6 +483,7 @@ pt:
|
|
|
477
483
|
resume: Retomar
|
|
478
484
|
show:
|
|
479
485
|
arguments: Argumentos
|
|
486
|
+
back: Voltar às filas
|
|
480
487
|
delete_confirm: Excluir permanentemente esta fila? Esta ação não pode ser desfeita.
|
|
481
488
|
delete_queue: Excluir fila
|
|
482
489
|
depth: 'Profundidade:'
|
data/config/locales/sv.yml
CHANGED
|
@@ -84,6 +84,7 @@ sv:
|
|
|
84
84
|
stats_cards:
|
|
85
85
|
enqueued: Inlagda
|
|
86
86
|
failed_dlq: Misslyckade / DLQ
|
|
87
|
+
failed_dlq_labels: Misslyckade / Dead Lettered
|
|
87
88
|
processes: Processer
|
|
88
89
|
queues: Köer
|
|
89
90
|
recurring: Återkommande
|
|
@@ -126,6 +127,7 @@ sv:
|
|
|
126
127
|
queue: 'Kö:'
|
|
127
128
|
visible_at: 'Synlig vid:'
|
|
128
129
|
retry: Försök igen
|
|
130
|
+
total_label: meddelanden i dead letter-kö
|
|
129
131
|
show:
|
|
130
132
|
back: Tillbaka till DLQ
|
|
131
133
|
discard: Kassera
|
|
@@ -225,6 +227,10 @@ sv:
|
|
|
225
227
|
bulk_select_all: Markera alla
|
|
226
228
|
bulk_select_row: Markera %{id}
|
|
227
229
|
bulk_selected: valda
|
|
230
|
+
pagination:
|
|
231
|
+
next: Nästa
|
|
232
|
+
previous: Föregående
|
|
233
|
+
showing: Visar %{from}–%{to} av %{total}
|
|
228
234
|
paused_badge: Pausad
|
|
229
235
|
queue_badge:
|
|
230
236
|
dlq: DLQ
|
|
@@ -477,6 +483,7 @@ sv:
|
|
|
477
483
|
resume: Återuppta
|
|
478
484
|
show:
|
|
479
485
|
arguments: Argument
|
|
486
|
+
back: Tillbaka till köer
|
|
480
487
|
delete_confirm: Ta bort denna kö permanent? Detta kan inte ångras.
|
|
481
488
|
delete_queue: Ta bort kö
|
|
482
489
|
depth: 'Djup:'
|
data/lib/pgbus/configuration.rb
CHANGED
|
@@ -216,7 +216,7 @@ module Pgbus
|
|
|
216
216
|
@web_per_page = 25
|
|
217
217
|
@web_live_updates = true
|
|
218
218
|
@web_data_source = nil
|
|
219
|
-
@insights_default_minutes =
|
|
219
|
+
@insights_default_minutes = 60 # 1 hour
|
|
220
220
|
@base_controller_class = "::ActionController::Base"
|
|
221
221
|
@return_to_app_url = nil
|
|
222
222
|
@metrics_enabled = true
|