RabbitMQ Communication

The Nervous System

RabbitMQ is the primary inter-service communication mechanism for FaceKom. All communication between vuer_css and vuer_oss flows through it. There is no direct HTTP or DB access from vuer_css to vuer_oss.

Messaging Patterns

The system uses four patterns from @techteamer/mq:

PatternDirectionSemanticsCount
RPCServer / RPCClientRequest-responseSynchronous-style calls with timeout40+ endpoints
QueueServer / QueueClientFire-and-forgetAsync message delivery17+ pairs
Publisher / SubscriberBroadcast (fanout)One-to-many notifications3 channels
graph LR
    subgraph vuer_css
        RPC_C[RPC Clients ~30]
        QC[Queue Clients]
        QS_CSS[Queue Servers]
        RPC_S_CSS[RPC Servers 4]
    end

    subgraph RabbitMQ
        RPC_Q[RPC Queues]
        FaF_Q[Fire-and-Forget Queues]
        PubSub[Fanout Exchanges]
    end

    subgraph vuer_oss
        RPC_S[RPC Servers 40+]
        QS[Queue Servers 17+]
        QC_OSS[Queue Clients]
        Pub[Publishers 3]
        Sub[Subscribers]
    end

    RPC_C -->|request| RPC_Q -->|dispatch| RPC_S
    QC -->|fire| FaF_Q -->|deliver| QS
    QC_OSS -->|fire| FaF_Q -->|deliver| QS_CSS
    Pub -->|broadcast| PubSub -->|fanout| Sub
    RPC_S_CSS -.->|reverse calls<br/>from oss| RPC_Q

RPC Servers (vuer_oss) — 40+ Endpoints

These are the “API” that vuer_oss exposes to vuer_css via RabbitMQ.

Identity & Auth

ServerPurpose
JwtAuthValidates JWT invite tokens via hook system
JwtKioskAuthValidates encrypted JWT for kiosk devices (decrypts with facekomPont key)
CreateCustomerCreates or retrieves customers by token, assigns fakeSessionId
GetCustomerRetrieves customer data
ClientGateClient gate operations

Self-Service V2 (16 registered actions)

ActionPurpose
selfService:v2:registerCreates encrypted JWT for customer
selfService:v2:startStarts self-service session
selfService:v2:abortAborts session
selfService:v2:getCurrentStepGet current workflow step
selfService:v2:getRemainingSecondsGet session time remaining
selfService:v2:skipSkip current step
selfService:v2:setConsentRecord consent
selfService:v2:setInputSubmit form input
selfService:v2:requestSmsTokenRequest SMS verification token
selfService:v2:photo:candidateSubmit photo candidate
selfService:v2:photo:finalizeFinalize photo capture
selfService:v2:video:startStart video recording
selfService:v2:video:stopStop video recording
selfService:v2:hologram:screenshotHologram screenshot
selfService:v2:hologram-v2:photoV2 hologram photo
selfService:v2:stream:startStart WebRTC stream
selfService:v2:stream:answerWebRTC answer
selfService:v2:stream:candidateICE candidate
selfService:v2:liveness-check-v2:photoLiveness check photo
selfService:v2:clientGateDemo:loginClient gate demo login

Video Chat & Transport

ServerPurpose
VideoChatOssJoin/leave videochat events
TransportOssTransport layer for WebRTC signaling
PresentationDocument presentation in calls
RecognitionFace recognition operations

Documents & Flows

ServerPurpose
FlowDocumentsFlow document management
DocumentUploadDocument upload
DocumentDeleteDocument deletion
CustomerDocumentsCustomer document retrieval

Admin & System

ServerPurpose
SystemChecksystemCheck:getJanus action
DeviceChangeDevice change events
DeviceCompatibilityCheckRPCServerDevice compatibility
WaitingRoomWaiting room operations
AppointmentAppointment scheduling
CallbackRequestCallback request handling
OpenHoursBusiness hours
OpenHoursCalendarsCalendar management
PartnerServicePartner service integration
PortalRPCServerPortal data
PortalDataRPCServerPortal data queries
MediaContentRPCServerMedia content
CustomContentRPCCServerCustom content
IdentificationRouterRPCServerIdentification routing
KioskAliveCheckRPCServerKiosk health check

Background & Processing

ServerPurpose
SelfServiceActionsSelf-service action handlers
SelfServiceUploadSelf-service uploads
SelfServiceRoomExportSelf-service room export
RoomExportRoom data export (300s timeout, prefetch 1)
ArchiveArchival operations
BackgroundBackground processing

Reports & Admin

ServerPurpose
ReportsGeneral reports
XlsxReportRPCServerExcel report generation
XmlReportRPCServerXML report generation
CronManagerRPCServerCron management
FlowAutoClearRPCServerFlow auto-clear
IntegrationLogRPCServerIntegration log (with rate limiting)
PingHealth check

RPC Clients (vuer_css vuer_oss) — ~30

ClientMirrors Server
JwtAuthJwtAuth
JwtKioskAuthJwtKioskAuth
CreateCustomerCreateCustomer
GetCustomerGetCustomer
ClientGateClientGate
SelfServiceV2Self-Service V2
SelfServiceActionsSelfServiceActions
SelfServiceUploadSelfServiceUpload
SelfServiceRoomExportSelfServiceRoomExport
DocumentUploadDocumentUpload
DocumentDeleteDocumentDelete
FlowDocumentsFlowDocuments
CustomerDocumentsCustomerDocuments
AppointmentAppointment
RequestCallbackCallbackRequest
WaitingRoomWaitingRoom
OpenHoursOpenHours
OpenHoursCalendarsOpenHoursCalendars
PartnerServicePartnerService
PortalDataRPCClientPortalDataRPCServer
PresentationPresentation
SystemCheckSystemCheck
DeviceChangeDeviceChange
DeviceCompatibilityCheckRPCClientDeviceCompatibilityCheck
IdentificationRouterRPCClientIdentificationRouter
KioskAliveCheckKioskAliveCheck
MediaContentMediaContentRPCServer
CustomContentRPCCLientCustomContentRPCCServer
TransportOssTransportOss
VideoChatOssVideoChatOss
RoomExportRoomExport

RPC Servers (vuer_css) — Receiving FROM vuer_oss

ServerPurpose
PingHealth check from OSS
SystemOssSystem commands from OSS
TransportCssTransport commands to CSS
DocumentScanRPCServerDocument scan requests

Queue Servers (Fire-and-Forget)

vuer_oss Queue Servers (receive from vuer_css)

Queue ServerPurpose
CustomerHistoryLogs customer history events
CustomerCustomer updates
FeedbackFeedback submissions
VideoChatOssVideochat join/leave actions
TransportOssTransport events
WebRTCLogWebRTC diagnostic logs
ClientErrorLogClient-side error logging
CssClientPingResultPing results from CSS
SelfServiceEventsSelf-service event tracking
SelfServiceV2Self-service V2 queue events (prefetch 10)
KioskDocumentScanQueueServerKiosk doc scan (60s timeout, no retry)
Convert / ConvertStateMedia conversion jobs
Storage / StorageStateStorage operations
RoomCron / SelfServiceCronCron triggers
JobStatusChangeJob status updates

vuer_css Queue Servers (receive from vuer_oss)

Queue ServerPurpose
ServiceBusGeneral service bus messages
TransportCssTransport events to CSS
VideoChatCssVideochat events to CSS
WaitingRoomWaiting room updates
SelfServiceCssSelf-service notifications
SelfServiceV2CssSelf-service V2 notifications

Pub/Sub (Broadcast)

Publishers (vuer_oss)

ChannelPurpose
CustomerKeyCustomer encryption key changes
SettingsChangeSettings updates
BackgroundProcessBackground process notifications

Subscribers in vuer_oss mirror these publishers for internal broadcast.

eSign RPC (esign_css > esign_oss)

QueueDirectionPurpose
esign:rpc-appcss ossApp registration/management
esign:rpc-customercss ossCustomer auth, login, 2FA
esign:rpc-timestampcss ossTimestamp operations
esign:rpc-documentcss ossDocument CRUD
esign:rpc-contractcss ossContract management
esign:rpc-offercss ossOffer operations
esign:rpc-signaturecss ossSignature creation/verification
esign:rpc-signature-checkcss ossSignature check
esign:css-pingoss cssHealth check
esign:cron-pingoss cssCron health check
esign:rpc-system-ossoss cssSystem config push

Other Service RPC

QueueDirectionPurpose
kkszb-rpcvuer_oss nyilvantarto-scraperGovernment registry queries
pdf-validateesign_oss pdfservicePDF signature validation
pdf-prepareSignedDocumentesign_oss pdfservicePrepare PDF for signing
pdf-insertSignatureesign_oss pdfserviceInsert CMS signature
pdf-checkActiveComponentsesign_oss pdfserviceCheck for JS/forms in PDF

RabbitMQ Configuration

PropertyValue
ProtocolAMQPS (TLS on port 5671)
AuthClient certificates
ManagementPort 15672
Version4.1.4
Connection poolUsed by esign_oss for multiple queue managers