Проверка связи M2M (запрос справочника) — раз в час вместо 10 мин, плюс кнопка
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Q7eREaYwUt1i4fNLZcGnjn
This commit is contained in:
@@ -4,7 +4,7 @@ package lkgateway
|
|||||||
// пути, у каждого своё доказательство работы:
|
// пути, у каждого своё доказательство работы:
|
||||||
// - Шлюз: ИШ отвечает bj (igwwatch.go);
|
// - Шлюз: ИШ отвечает bj (igwwatch.go);
|
||||||
// - НРД: шлюз успешно опрашивает НРД — по журналу ИШ (nsdlinkwatch.go);
|
// - НРД: шлюз успешно опрашивает НРД — по журналу ИШ (nsdlinkwatch.go);
|
||||||
// - M2M: сквозная проверка — раз в 10 минут bj запрашивает у НРД справочник участников (#M2MHR)
|
// - M2M: сквозная проверка — раз в час и по кнопке «Проверить связь сейчас» bj запрашивает у НРД справочник участников (#M2MHR)
|
||||||
// и ждёт ответ #M2MTH: он проходит весь путь до сервиса M2M и обратно;
|
// и ждёт ответ #M2MTH: он проходит весь путь до сервиса M2M и обратно;
|
||||||
// - Отправка: подтверждение доставки каждого пакета (igw.WithDeliveryHook) и недоставленные переводы.
|
// - Отправка: подтверждение доставки каждого пакета (igw.WithDeliveryHook) и недоставленные переводы.
|
||||||
// Отсутствие ошибок само по себе не считается «работает»: нет свежего подтверждения — жёлтый.
|
// Отсутствие ошибок само по себе не считается «работает»: нет свежего подтверждения — жёлтый.
|
||||||
@@ -27,7 +27,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
nsdProbeEvery = 10 * time.Minute
|
nsdProbeEvery = time.Hour // 22.10.2026: было 10 мин — лишняя нагрузка на НРД; живость между проверками видна по журналу ИШ
|
||||||
nsdProbeWarnAfter = 3 * time.Minute // ответа на проверку нет 3 мин — жёлтый
|
nsdProbeWarnAfter = 3 * time.Minute // ответа на проверку нет 3 мин — жёлтый
|
||||||
nsdProbeErrAfter = 10 * time.Minute // 10 мин — красный
|
nsdProbeErrAfter = 10 * time.Minute // 10 мин — красный
|
||||||
nsdPollErrAfter = 3 * time.Minute // шлюз получает от НРД ошибки 3 мин — красный (до этого жёлтый)
|
nsdPollErrAfter = 3 * time.Minute // шлюз получает от НРД ошибки 3 мин — красный (до этого жёлтый)
|
||||||
@@ -294,7 +294,7 @@ func (s *Server) sendNSDProbe(ctx context.Context) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// nsdHealthLoop — проверка раз в 10 мин, история раз в минуту, автоповтор недоставленных.
|
// nsdHealthLoop — проверка раз в час, история раз в минуту, автоповтор недоставленных.
|
||||||
func (s *Server) nsdHealthLoop(ctx context.Context) {
|
func (s *Server) nsdHealthLoop(ctx context.Context) {
|
||||||
healthRegister("nsd-health", 3*time.Minute)
|
healthRegister("nsd-health", 3*time.Minute)
|
||||||
nsdHistoryLoad()
|
nsdHistoryLoad()
|
||||||
|
|||||||
@@ -332,7 +332,7 @@ type HandbookEntry struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// saveHandbook раскладывает справочник в плоский список и пишет в файл. Возвращает, изменился ли
|
// saveHandbook раскладывает справочник в плоский список и пишет в файл. Возвращает, изменился ли
|
||||||
// состав: справочник запрашивается раз в 10 минут (сквозная проверка связи, nsdhealth.go), и без
|
// состав: справочник запрашивается раз в час (сквозная проверка связи, nsdhealth.go), и без
|
||||||
// изменений его не нужно ни рассылать, ни переписывать в DEPO.
|
// изменений его не нужно ни рассылать, ни переписывать в DEPO.
|
||||||
func saveHandbook(hb *m2m.M2MTransferHandbook) (changed bool) { return saveHandbookEx(hb, true) }
|
func saveHandbook(hb *m2m.M2MTransferHandbook) (changed bool) { return saveHandbookEx(hb, true) }
|
||||||
|
|
||||||
|
|||||||
@@ -340,7 +340,7 @@ func (s *Server) Run(ctx context.Context) error {
|
|||||||
|
|
||||||
// Авто-обновление справочника участников M2M раз в сутки (только реальный
|
// Авто-обновление справочника участников M2M раз в сутки (только реальный
|
||||||
// ИШ). Тик суточный — в heartbeat-монитор не регистрируем, только recover.
|
// ИШ). Тик суточный — в heartbeat-монитор не регистрируем, только recover.
|
||||||
go superviseLoop(ctx, "nsd-health", s.rc, s.nsdHealthLoop) // связь с НРД: проверка раз в 10 мин (справочник), история, автоповтор
|
go superviseLoop(ctx, "nsd-health", s.rc, s.nsdHealthLoop) // связь с НРД: проверка раз в час (справочник), история, автоповтор
|
||||||
|
|
||||||
// QUIK МНП: автоматический цикл M2M (регистрация до отправки — хук в
|
// QUIK МНП: автоматический цикл M2M (регистрация до отправки — хук в
|
||||||
// SendBuiltRequest; подпись/снятие/зачисление по MS010 — опросчик).
|
// SendBuiltRequest; подпись/снятие/зачисление по MS010 — опросчик).
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
<td><span class="nsd-dot {{.State}}"></span></td>
|
<td><span class="nsd-dot {{.State}}"></span></td>
|
||||||
<td><strong>{{.Title}}</strong></td>
|
<td><strong>{{.Title}}</strong></td>
|
||||||
<td>{{.Text}}{{with .Detail}}<br><code>{{.}}</code>{{end}}</td>
|
<td>{{.Text}}{{with .Detail}}<br><code>{{.}}</code>{{end}}</td>
|
||||||
<td class="muted" style="font-size:12.5px">{{if eq .Key "igw"}}bj обращается к шлюзу каждые 30 с{{else if eq .Key "nsd"}}журнал шлюза: ответы НРД на опросы входящих{{else if eq .Key "m2m"}}раз в 10 мин запрос справочника участников M2M и ответ на него — весь путь до сервиса M2M и обратно{{else}}подтверждение доставки каждого отправленного пакета{{end}}</td>
|
<td class="muted" style="font-size:12.5px">{{if eq .Key "igw"}}bj обращается к шлюзу каждые 30 с{{else if eq .Key "nsd"}}журнал шлюза: ответы НРД на опросы входящих{{else if eq .Key "m2m"}}раз в час (и по кнопке «Проверить связь сейчас») запрос справочника участников M2M и ответ на него — весь путь до сервиса M2M и обратно{{else}}подтверждение доставки каждого отправленного пакета{{end}}</td>
|
||||||
</tr>{{end}}
|
</tr>{{end}}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
Reference in New Issue
Block a user