VLINGO XOOM
  • Introduction
  • Overview
    • Quick Reference
  • Getting Started
    • Hello, World!
  • Architecture
  • XOOM Cloud
    • AWS Infrastructure
    • XOOM Cloud Operator
    • XOOM Cloud Demo
  • XOOM Designer
    • Development Guide
      • End-to-End Tests
  • Turbo
    • Annotations
    • Scooter
  • Actors
  • HTTP (REST and RPC)
  • Lattice
    • CQRS
    • Object, Stateful, and Sourced Entities With CQRS
    • Grid
    • Exchange
    • Processes
    • Spaces
    • Projections
    • Routers
  • Streams
  • Schemata
  • GraphQL Server
  • Symbio (Reactive Storage)
    • Journal Storage
    • State Storage
    • Object Storage
    • Adapters
  • Cluster
  • Directory
  • Common Tools
  • Build Plugins
  • Telemetry
  • Wire
  • Auth-Auth
  • Containerization
  • Tools and Patterns for Specific Use Cases
  • Appendix A: Deploy to Pivotal Cloud Foundry
  • FAQ
Powered by GitBook
On this page
  • Javadoc and Source Code
  • TCP Support
  • Practical UDP Multicast
  • RSocket Support

Wire

Wire protocol full-duplex TCP, UDP multicast, as well as RSocket messaging implementations.

PreviousTelemetryNextAuth-Auth

Last updated 4 years ago

Javadoc and Source Code

The XOOM Wire component offers various network protocols implemented through XOOM Actors. Since this component may not necessarily be used beyond our own platform components, such as , and , we do not document it thoroughly herein. We suggest seeing the for more details. You will also find the handy.

TCP Support

There are various implementations of TCP support. These are generally used for client-server interactions. Uses can be seen primarily in XOOM HTTP, such as the following.

// general
io.vlingo.xoom.wire.node.Address
io.vlingo.xoom.wire.node.AddressType
io.vlingo.xoom.wire.node.Host

// server
io.vlingo.xoom.wire.channel.RequestChannelConsumer
io.vlingo.xoom.wire.channel.RequestResponseContext
io.vlingo.xoom.wire.fdx.bidirectional.ServerRequestResponseChannel

// clients
io.vlingo.xoom.wire.channel.ResponseChannelConsumer
io.vlingo.xoom.wire.fdx.bidirectional.ClientRequestResponseChannel

Practical UDP Multicast

The purpose of supporting UDP is for multicast, or in other words, broadcast publishing of information. One typical use case is a UDP multicaster service that needs to know what to multicast in behalf of other services. This is the combination of Point-to-Point Channel and Publish-Subscribe patterns, and a form of Message Router. Thus, our UPD multicast is a use-case-specific component, although it can be used for basic UDP multicast of foreknown information.

The XOOM Wire component MulticastPublisherReader is both a UDP multicast publisher and a TCP socket reader. The client of the MulticastPublisherReader takes a ChannelReaderConsumer as a constructor parameter, and when it receives TCP requests it relays the requests to the ChannelReaderConsumer. Why? Because the MulticastPublisherReader only knows how to publish two things:

  1. It's own availability, which it does by multicasting its own TCP address, which it holds in its publisherAddress instance variable. This TCP address is how other services can tell it what to publish, which leads to...

  2. Whatever its client tells it to multicast. This is done via its ChannelPublisher protocol method void send(final RawMessage message). These are received via TCP requests, for publishing of the information in the RawMessage. One example of such is registration by services that want their availability know to other services.

RSocket Support

RSocket is currently used only by XOOM Cluster, but we will soon add support in XOOM Streams for high-throughput, low latency streaming over the network. You will find our current RSocket support in:

.

XOOM HTTP
XOOM Cluster
XOOM Directory
Javadoc
source code
io.vlingo.xoom.wire.fdx.bidirectional.rsocket.RSocketServerChannelActor
io.vlingo.xoom.wire.fdx.inbound.rsocket.RSocketChannelInboundReader
io.vlingo.xoom.wire.fdx.outbound.rsocket.RSocketOutboundChannel
The best place to see this in use is in the XOOM Directory service