Closed maqdev closed 8 years ago
Опубликованое событие в hyperbus:
{"uri":{"pattern":"/revault/content/{path:*}","args":{"path":"services/status-monitor/app-statuses/9"}},"headers":{"method":["feed:patch"],"revision":["45958"],"contentType":["app-env-status"],"messageId":["7iYvR--JFUG4i5j5tBoIiPD0S1XzY6"],"correlationId":["1"]},"body":{"appId":"9","environments":{"live":{"overriddenStatus":null,"status":false,"servers":{"QA Gardarika":{"lastDetectedAt":1461613087430,"detectedStatus":false}}}},"_links":{}}}
INF 2016-04-26 02:04:02,097 rt.kafkatransport.TopicSubscription +1 handler on consumer #4b08bfd8@cpb3-q.qa.inn.ru-10105 on topic hyperbus2 -> RequestMatcher(Some(Uri(Specific(/revault/content/{path:*})#path -> RegexMatcher(services/status-monitor/app-statuses/.*))),Map(method -> RegexMatcher(^feed:.*$)))
INF 2016-04-26 02:04:03,332 rbus.transport.api.TransportManager New `onEvent` subscription on RequestMatcher(Some(Uri(Specific(/revault/content/{path:*})#path -> RegexMatcher(services/status-monitor/app-statuses/.*))),Map(method -> RegexMatcher(^feed:.*$))): #61f2e995. TransportSubscription(eu.inn.hyperbus.transport.KafkaServerTransport@40f8f5a8,KafkaTransportSubscription(TopicSubscriptionKey(hyperbus2,List(),cpb3-q.qa.inn.ru-10105),2))
INF 2016-04-26 02:04:03,332 rt.kafkatransport.TopicSubscription Starting consumer #4b08bfd8@cpb3-q.qa.inn.ru-10105 on topic hyperbus2 -> List(RequestMatcher(Some(Uri(Specific(/revault/content/{path:*})#path -> RegexMatcher(services/status-monitor/app-statuses/.*))),Map(method -> RegexMatcher(^feed:.*$))))
TRA 2016-04-26 02:04:03,359 eu.inn.hyperbus.Hyperbus hyperbus <~ eu.inn.hyperbus.model.DynamicRequest[eu.inn.hyperbus.model.DynamicBodyContainer]:{"uri":{"pattern":"/revault/content/{path:*}","args":{"path":"services/status-monitor/app-statuses"}},"headers":{"messageId":["100500"],"method":["get"]},"body":{"page.from":null}}
TRA 2016-04-26 02:04:03,470 eu.inn.hyperbus.Hyperbus hyperbus ~(R)~> eu.inn.hyperbus.model.Ok[eu.inn.hyperbus.model.DynamicBodyContainer]:{"status":200,"headers":{"revision":["46342"],"messageId":["7iZCl-10Ihn8RQphlhLoMp-xTun47y"],"correlationId":["100500"]},"body":{"_embedded":{"els":[{"appId":"1","environments":{"live":{"status":false,"servers":{"QA World":{"lastDetectedAt":1459873734242,"detectedStatus":false}}}},"_links":{},"id":"1"},{"appId":"1006","environments":{"live":{"status":false,"servers":{"QA Phoenix":{"lastDetectedAt":1459873734081,"detectedStatus":false}}}},"_links":{},"id":"1006"},{"appId":"17","environments":{"live":{"status":false,"servers":{"QA Москва":{"lastDetectedAt":1459873734243,"detectedStatus":false}}}},"_links":{},"id":"17"},{"appId":"19","environments":{"live":{"status":false,"servers":{"QA gw101":{"lastDetectedAt":1459873734202,"detectedStatus":false}}}},"_links":{},"id":"19"},{"appId":"2","environments":{"live":{"status":false,"servers":{"QA Jupiter":{"lastDetectedAt":1459873734244,"detectedStatus":false}}}},"_links":{},"id":"2"},{"appId":"33","environments":{"live":{"status":false,"servers":{"QA Fehyshar":{"lastDetectedAt":1459873734232,"detectedStatus":false}}}},"_links":{},"id":"33"},{"appId":"6","environments":{"live":{"status":false,"servers":{"QA Franz":{"lastDetectedAt":1459873734242,"detectedStatus":false}}}},"_links":{},"id":"6"},{"appId":"604","environments":{"live":{"status":false,"servers":{"testGameSuccess":{"lastDetectedAt":1461571423743,"detectedStatus":false}}}},"_links":{},"id":"604"},{"appId":"611","environments":{"live":{"overriddenStatus":false,"status":false,"servers":{"alwaysOff":{"lastDetectedAt":1459873724228,"detectedStatus":true}}}},"_links":{},"id":"611"},{"appId":"612","environments":{"live":{"overriddenStatus":true,"status":true,"servers":{"alwaysOn":{"lastDetectedAt":1459981760970,"detectedStatus":false}}}},"_links":{},"id":"612"},{"appId":"8","environments":{"live":{"status":false,"servers":{"QA 01":{"lastDetectedAt":1459873734052,"detectedStatus":false}}}},"_links":{},"id":"8"},{"appId":"9","environments":{"live":{"status":true,"servers":{"QA Gardarika":{"lastDetectedAt":1461625427826,"detectedStatus":true}}}},"_links":{},"id":"9"}]}}}
TRA 2016-04-26 02:04:03,478 facade.events.FeedSubscriptionActor Processing resource state eu.inn.hyperbus.model.Ok[eu.inn.hyperbus.model.DynamicBodyContainer]:{"status":200,"headers":{"revision":["46342"],"messageId":["7iZCl-10Ihn8RQphlhLoMp-xTun47y"],"correlationId":["100500"]},"body":{"_embedded":{"els":[{"appId":"1","environments":{"live":{"status":false,"servers":{"QA World":{"lastDetectedAt":1459873734242,"detectedStatus":false}}}},"_links":{},"id":"1"},{"appId":"1006","environments":{"live":{"status":false,"servers":{"QA Phoenix":{"lastDetectedAt":1459873734081,"detectedStatus":false}}}},"_links":{},"id":"1006"},{"appId":"17","environments":{"live":{"status":false,"servers":{"QA Москва":{"lastDetectedAt":1459873734243,"detectedStatus":false}}}},"_links":{},"id":"17"},{"appId":"19","environments":{"live":{"status":false,"servers":{"QA gw101":{"lastDetectedAt":1459873734202,"detectedStatus":false}}}},"_links":{},"id":"19"},{"appId":"2","environments":{"live":{"status":false,"servers":{"QA Jupiter":{"lastDetectedAt":1459873734244,"detectedStatus":false}}}},"_links":{},"id":"2"},{"appId":"33","environments":{"live":{"status":false,"servers":{"QA Fehyshar":{"lastDetectedAt":1459873734232,"detectedStatus":false}}}},"_links":{},"id":"33"},{"appId":"6","environments":{"live":{"status":false,"servers":{"QA Franz":{"lastDetectedAt":1459873734242,"detectedStatus":false}}}},"_links":{},"id":"6"},{"appId":"604","environments":{"live":{"status":false,"servers":{"testGameSuccess":{"lastDetectedAt":1461571423743,"detectedStatus":false}}}},"_links":{},"id":"604"},{"appId":"611","environments":{"live":{"overriddenStatus":false,"status":false,"servers":{"alwaysOff":{"lastDetectedAt":1459873724228,"detectedStatus":true}}}},"_links":{},"id":"611"},{"appId":"612","environments":{"live":{"overriddenStatus":true,"status":true,"servers":{"alwaysOn":{"lastDetectedAt":1459981760970,"detectedStatus":false}}}},"_links":{},"id":"612"},{"appId":"8","environments":{"live":{"status":false,"servers":{"QA 01":{"lastDetectedAt":1459873734052,"detectedStatus":false}}}},"_links":{},"id":"8"},{"appId":"9","environments":{"live":{"status":true,"servers":{"QA Gardarika":{"lastDetectedAt":1461625427826,"detectedStatus":true}}}},"_links":{},"id":"9"}]}}} for /v3/app-statuses?page.from=
DEB 2016-04-26 02:04:03,509 facade.events.FeedSubscriptionActor Reliable subscription started for FacadeRequestContext(/127.0.0.1,http://api.4gametest.com/v3/,/v3/app-statuses?page.from=,subscribe,Map(Hyperbus-Message-Id -> List(100500), X-Forwarded-Host -> List(api.4gametest.com), Origin -> List(chrome-extension://hgmloofddffdnphfgcellkdfbfbjeloo), Remote-Ip-Port -> List(127.0.0.1:48198), Upgrade -> List(websocket), X-Forwarded-For -> List(10.33.54.188, 10.33.54.188), Connection -> List(upgrade), X-Scheme -> List(http), Cache-Control -> List(no-cache), Sec-WebSocket-Extensions -> List(permessage-deflate; client_max_window_bits), X-Forwarded-Proto -> List(https), Pragma -> List(no-cache), X-Real-IP -> List(10.33.54.188), Sec-WebSocket-Key -> List(Vz9UIv7GPf3y3cC1w3o7mg==), Accept-Language -> List(ru, en-US;q=0.8, en;q=0.6), Accept-Encoding -> List(gzip, deflate, sdch), User-Agent -> List(Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.86 Safari/537.36), Host -> List(api.4gametest.com), Sec-WebSocket-Version -> List(13), Remote-Address -> List(127.0.0.1)),Some(PreparedRequestContext(Uri(Specific(/app-statuses)),get,Map(messageId -> List(100500))))) with revision 46342
TRA 2016-04-26 02:04:03,639 rt.kafkatransport.TopicSubscription Consumer 4b08bfd8@cpb3-q.qa.inn.ru-10105 got message from kafka hyperbus2/43119: {"uri":{"pattern":"/revault/content/{path:*}","args":{"path":"services/status-monitor/app-statuses/9"}},"headers":{"messageId":["7iZCj--JQ8rgloK1si6TEKslN9w9uW"],"method":["feed:patch"],"contentType":["app-env-status"],"revision":["46342"]},"body":{"appId":"9","environments":{"live":{"overriddenStatus":null,"status":true,"servers":{"QA Gardarika":{"lastDetectedAt":1461625427826,"detectedStatus":true}}}},"_links":{}}}
TRA 2016-04-26 02:04:03,658 eu.inn.hyperbus.Hyperbus hyperbus |> eu.inn.hyperbus.model.DynamicRequest[eu.inn.hyperbus.model.DynamicBodyContainer]:{"uri":{"pattern":"/revault/content/{path:*}","args":{"path":"services/status-monitor/app-statuses/9"}},"headers":{"messageId":["7iZCj--JQ8rgloK1si6TEKslN9w9uW"],"method":["feed:patch"],"contentType":["app-env-status"],"revision":["46342"]},"body":{"appId":"9","environments":{"live":{"overriddenStatus":null,"status":true,"servers":{"QA Gardarika":{"lastDetectedAt":1461625427826,"detectedStatus":true}}}},"_links":{}}}
DEB 2016-04-26 02:04:03,660 .facade.events.SubscriptionsManager Event received (Some(cpb3-q.qa.inn.ru-10105)): eu.inn.hyperbus.model.DynamicRequest[eu.inn.hyperbus.model.DynamicBodyContainer]:{"uri":{"pattern":"/revault/content/{path:*}","args":{"path":"services/status-monitor/app-statuses/9"}},"headers":{"messageId":["7iZCj--JQ8rgloK1si6TEKslN9w9uW"],"method":["feed:patch"],"contentType":["app-env-status"],"revision":["46342"]},"body":{"appId":"9","environments":{"live":{"overriddenStatus":null,"status":true,"servers":{"QA Gardarika":{"lastDetectedAt":1461625427826,"detectedStatus":true}}}},"_links":{}}}
DEB 2016-04-26 02:04:03,664 .facade.events.SubscriptionsManager Event #(7iZCj--JQ8rgloK1si6TEKslN9w9uW) forwarded to Actor[akka://facade/user/simple-service-actor/wrkr-2/Subscr-100500#-324045534]/100500
TRA 2016-04-26 02:04:03,665 facade.events.FeedSubscriptionActor Processing reliable event #46342 eu.inn.hyperbus.model.DynamicRequest[eu.inn.hyperbus.model.DynamicBodyContainer]:{"uri":{"pattern":"/revault/content/{path:*}","args":{"path":"services/status-monitor/app-statuses/9"}},"headers":{"method":["feed:patch"],"revision":["46342"],"contentType":["app-env-status"],"messageId":["7iZCj--JQ8rgloK1si6TEKslN9w9uW"],"correlationId":["100500"]},"body":{"appId":"9","environments":{"live":{"overriddenStatus":null,"status":true,"servers":{"QA Gardarika":{"lastDetectedAt":1461625427826,"detectedStatus":true}}}},"_links":{}}} for /v3/app-statuses?page.from=
TRA 2016-04-26 02:04:15,538 rt.kafkatransport.TopicSubscription Consumer 4b08bfd8@cpb3-q.qa.inn.ru-10105 got message from kafka hyperbus2/25119: {"uri":{"pattern":"/revault/content/{path:*}","args":{"path":"services/status-monitor/app-statuses/9"}},"headers":{"messageId":["7iZCm--R4GguA2yTmPqm2xcm5yqzAo"],"method":["feed:patch"],"contentType":["app-env-status"],"revision":["46343"]},"body":{"appId":"9","environments":{"live":{"overriddenStatus":null,"status":false,"servers":{"QA Gardarika":{"lastDetectedAt":1461625455435,"detectedStatus":false}}}},"_links":{}}}
TRA 2016-04-26 02:04:15,541 eu.inn.hyperbus.Hyperbus hyperbus |> eu.inn.hyperbus.model.DynamicRequest[eu.inn.hyperbus.model.DynamicBodyContainer]:{"uri":{"pattern":"/revault/content/{path:*}","args":{"path":"services/status-monitor/app-statuses/9"}},"headers":{"messageId":["7iZCm--R4GguA2yTmPqm2xcm5yqzAo"],"method":["feed:patch"],"contentType":["app-env-status"],"revision":["46343"]},"body":{"appId":"9","environments":{"live":{"overriddenStatus":null,"status":false,"servers":{"QA Gardarika":{"lastDetectedAt":1461625455435,"detectedStatus":false}}}},"_links":{}}}
DEB 2016-04-26 02:04:15,542 .facade.events.SubscriptionsManager Event received (Some(cpb3-q.qa.inn.ru-10105)): eu.inn.hyperbus.model.DynamicRequest[eu.inn.hyperbus.model.DynamicBodyContainer]:{"uri":{"pattern":"/revault/content/{path:*}","args":{"path":"services/status-monitor/app-statuses/9"}},"headers":{"messageId":["7iZCm--R4GguA2yTmPqm2xcm5yqzAo"],"method":["feed:patch"],"contentType":["app-env-status"],"revision":["46343"]},"body":{"appId":"9","environments":{"live":{"overriddenStatus":null,"status":false,"servers":{"QA Gardarika":{"lastDetectedAt":1461625455435,"detectedStatus":false}}}},"_links":{}}}
DEB 2016-04-26 02:04:15,543 .facade.events.SubscriptionsManager Event #(7iZCm--R4GguA2yTmPqm2xcm5yqzAo) forwarded to Actor[akka://facade/user/simple-service-actor/wrkr-2/Subscr-100500#-324045534]/100500
TRA 2016-04-26 02:04:15,543 facade.events.FeedSubscriptionActor Processing reliable event #46343 eu.inn.hyperbus.model.DynamicRequest[eu.inn.hyperbus.model.DynamicBodyContainer]:{"uri":{"pattern":"/revault/content/{path:*}","args":{"path":"services/status-monitor/app-statuses/9"}},"headers":{"method":["feed:patch"],"revision":["46343"],"contentType":["app-env-status"],"messageId":["7iZCm--R4GguA2yTmPqm2xcm5yqzAo"],"correlationId":["100500"]},"body":{"appId":"9","environments":{"live":{"overriddenStatus":null,"status":false,"servers":{"QA Gardarika":{"lastDetectedAt":1461625455435,"detectedStatus":false}}}},"_links":{}}} for /v3/app-statuses?page.from=
На текущий момент поддержка событий реализована некорректно на разных уровнях:
Решения:
События в RAML указывать отдельно от команд, которые им соответствуют. На текущий момент RAML не поддерживает кастомные методы. В связи с этим два пути:
1.1. доработать парсер RAML, см. также https://github.com/raml-org/raml-spec/issues/192 1.2. соглашение URI, например
/${events}/abc
специфицирует отдельно события для ресурса/abc
FacadeRequestContext
подписчика.Что мы должны получить:
private
на событие feed:deleteоно перестанет приходить на фронт и это не зависит от того, висит ли
private` на delete для этого ресурса/v3/app-statuses?page.from=
приходить события с uri/app-statuses/1