Overview¶
The Spring Cloud Stream Binder for AMPS is a binder implementation that connects Spring Cloud Stream applications to AMPS (Advanced Message Processing System), a high-performance messaging platform from 60East Technologies.
What is AMPS?¶
AMPS is a publish-subscribe messaging platform designed for high-throughput, low-latency data distribution. Key AMPS features include:
- SOW (State of the World) — Queryable message cache that returns the most recent state for each record.
- Publish & Subscribe — Standard pub/sub messaging with content filtering.
- Bookmarks — Durable subscriptions with replay from any point in history.
- High Availability — Built-in replication and transparent failover via the HA Client.
- Content Filtering — Server-side filter expressions to control which messages a subscriber receives.
- Queues — Work-queue semantics with at-least-once delivery guarantees.
What is Spring Cloud Stream?¶
Spring Cloud Stream is a framework for building message-driven microservices. It provides a binder abstraction that decouples application code from the underlying messaging middleware. By using this AMPS binder, you can leverage the same Spring Cloud Stream programming model you already know — with AMPS as the messaging transport.
Architecture¶
┌─────────────────────────────────────────────────────┐
│ Spring Cloud Stream │
│ │
│ @Bean Consumer<Message<T>> Function<T, R> │
│ │ │ │
│ ▼ ▼ │
│ ┌─────────────────────────────────────────────┐ │
│ │ Spring Cloud Stream Binder SPI │ │
│ └──────────────────┬──────────────────────────┘ │
│ │ │
│ ┌──────────────────▼──────────────────────────┐ │
│ │ AMPS Binder (this project) │ │
│ │ │ │
│ │ AmpsMessageChannelBinder │ │
│ │ ├── AmpsMessageProducer (consumer side) │ │
│ │ └── AmpsProducerMessageHandler (pub side)│ │
│ └──────────────────┬──────────────────────────┘ │
│ │ │
└──────────────────────┼──────────────────────────────┘
│
┌────────▼────────┐
│ AMPS Server │
└─────────────────┘
Features¶
- Full Spring Cloud Stream compatibility — Use the standard
@Bean/java.util.functionprogramming model. - SOW, SOW-and-Subscribe, and plain Subscribe — Choose subscription modes via configuration.
- Bookmark support — Resume subscriptions from
MOST_RECENT,EPOCH,NOW, or a custom bookmark. - Content filtering — Apply AMPS filter expressions to subscriptions.
- HA Client — Automatic reconnection and failover across multiple AMPS instances.
- Multi-binder support — Configure multiple named AMPS binders in a single application.
- Distributed tracing — Transparent trace propagation via Micrometer or OpenTracing.
- Custom header propagation — Encode arbitrary metadata into AMPS correlation IDs.
- Concurrent consumers — Scale consumption with multiple parallel AMPS connections per binding.
- Authentication — Username/password or custom
Authenticatorbeans.
Modules¶
spring-cloud-stream-binder-amps¶
The core binder module. Provides:
AmpsMessageChannelBinder— The main binder implementation.- Consumer endpoint (
AmpsMessageProducer) — Subscribes to AMPS and pushes messages into Spring channels. - Producer message handler (
AmpsProducerMessageHandler) — Publishes Spring messages to AMPS topics. - AMPS-specific configuration properties for binder, consumer, and producer.
- Connection management with HA client support.
spring-cloud-stream-tracer-amps¶
An optional add-on module that adds distributed tracing to AMPS messages. It transparently wraps the AMPS connection layer to inject and extract trace context from message headers. Supports:
- Micrometer (B3 propagation)
- OpenTracing (via
GlobalTracer)