Oracle Transactional Event Queues (TxEventQ)
Kafka-compatible event streaming and message queuing built into Oracle Database.
Kafka-compatible event streaming and message queuing built into Oracle Database.
asyncapi: 2.6.0
info:
title: Oracle Transactional Event Queues (TxEventQ) API
description: >-
Oracle Transactional Event Queues provide Kafka-compatible event streaming
and message queuing capabilities built into Oracle Database. TxEventQ enables
event-driven architectures with transactional guarantees, supporting
publish-subscribe patterns, consumer groups, partitioned topics, and exactly-once
message delivery semantics. Accessible through ORDS REST endpoints and native
Kafka protocol compatibility.
version: 25.4.0
contact:
name: Oracle Support
url: https://support.oracle.com
email: [email protected]
license:
name: Oracle Technology Network License
url: https://www.oracle.com/downloads/licenses/standard-license.html
termsOfService: https://www.oracle.com/legal/terms.html
externalDocs:
description: Oracle Transactional Event Queues Documentation
url: https://docs.oracle.com/en/database/oracle/oracle-database/23/adque/
servers:
ords:
url: https://{host}:{port}/ords/{schema}
protocol: https
description: ORDS REST endpoint for TxEventQ management and message operations
variables:
host:
default: localhost
description: ORDS server hostname
port:
default: '8443'
description: ORDS server port
schema:
default: myschema
description: Database schema
kafka:
url: '{host}:{port}'
protocol: kafka
description: >-
Kafka-compatible protocol endpoint for native Kafka client connectivity.
Oracle TxEventQ supports the Apache Kafka protocol, allowing standard
Kafka producers and consumers to interact with Oracle Database event queues.
variables:
host:
default: localhost
description: Kafka protocol endpoint hostname
port:
default: '9092'
description: Kafka protocol endpoint port
defaultContentType: application/json
channels:
database/txeventq/topics/{topicName}:
description: >-
A TxEventQ topic represents an ordered, partitioned event stream stored
in Oracle Database. Topics support multiple producers and consumer groups
with exactly-once delivery semantics backed by database transactions.
parameters:
topicName:
description: The name of the TxEventQ topic
schema:
type: string
publish:
operationId: produceMessage
summary: Produce a message to a topic
description: >-
Publishes a message to the specified TxEventQ topic. Messages are
durably stored in Oracle Database with transactional guarantees.
Supports key-based partitioning for ordered delivery within partitions.
message:
$ref: '#/components/messages/ProduceMessage'
bindings:
kafka:
groupId:
type: string
subscribe:
operationId: consumeMessages
summary: Consume messages from a topic
description: >-
Subscribes to messages from the specified TxEventQ topic via a
consumer group. Supports at-least-once and exactly-once delivery
semantics. Consumer instances within a group share partition assignments.
message:
$ref: '#/components/messages/ConsumeMessage'
bindings:
kafka:
groupId:
type: string
description: Consumer group identifier
database/txeventq/topics:
description: Topic management channel for listing all available TxEventQ topics
subscribe:
operationId: listTopics
summary: List all TxEventQ topics
description: Returns a list of all available TxEventQ topics in the schema.
message:
$ref: '#/components/messages/TopicList'
database/txeventq/clusters/{clusterId}/topics:
description: Cluster-scoped topic management channel
parameters:
clusterId:
description: The TxEventQ cluster identifier
schema:
type: string
publish:
operationId: createTopic
summary: Create a new topic
description: >-
Creates a new TxEventQ topic in the specified cluster with the given
configuration including partition count, retention policy, and replication settings.
message:
$ref: '#/components/messages/CreateTopicRequest'
database/txeventq/clusters/{clusterId}/consumer-groups/{consumerGroupId}:
description: Consumer group management channel
parameters:
clusterId:
description: The TxEventQ cluster identifier
schema:
type: string
consumerGroupId:
description: The consumer group identifier
schema:
type: string
publish:
operationId: createConsumerGroup
summary: Create a consumer group
description: >-
Creates a new consumer group within the specified cluster.
Consumer groups enable parallel processing of topic messages
with automatic partition assignment.
message:
$ref: '#/components/messages/CreateConsumerGroupRequest'
database/txeventq/consumers/{groupName}/instances/{instanceId}/records:
description: Message consumption endpoint for fetching messages from a consumer instance
parameters:
groupName:
description: The consumer group name
schema:
type: string
instanceId:
description: The consumer instance identifier
schema:
type: string
subscribe:
operationId: fetchMessages
summary: Fetch messages from consumer instance
description: >-
Retrieves available messages for a specific consumer instance
within a consumer group. Returns messages from assigned partitions
with offset tracking.
message:
$ref: '#/components/messages/FetchedMessages'
database/txeventq/topics/{topicName}/partitions:
description: Topic partition information channel
parameters:
topicName:
description: The name of the TxEventQ topic
schema:
type: string
subscribe:
operationId: getPartitions
summary: Get topic partitions
description: Returns partition information for the specified topic.
message:
$ref: '#/components/messages/PartitionList'
components:
messages:
ProduceMessage:
name: ProduceMessage
title: Produce Message
summary: A message to be published to a TxEventQ topic
contentType: application/json
payload:
$ref: '#/components/schemas/ProduceMessagePayload'
ConsumeMessage:
name: ConsumeMessage
title: Consumed Message
summary: A message consumed from a TxEventQ topic
contentType: application/json
payload:
$ref: '#/components/schemas/ConsumedMessagePayload'
TopicList:
name: TopicList
title: Topic List
summary: List of available TxEventQ topics
contentType: application/json
payload:
$ref: '#/components/schemas/TopicListPayload'
CreateTopicRequest:
name: CreateTopicRequest
title: Create Topic Request
summary: Request to create a new TxEventQ topic
contentType: application/json
payload:
$ref: '#/components/schemas/CreateTopicPayload'
CreateConsumerGroupRequest:
name: CreateConsumerGroupRequest
title: Create Consumer Group Request
summary: Request to create a new consumer group
contentType: application/json
payload:
$ref: '#/components/schemas/CreateConsumerGroupPayload'
FetchedMessages:
name: FetchedMessages
title: Fetched Messages
summary: Messages fetched from a consumer instance
contentType: application/json
payload:
$ref: '#/components/schemas/FetchedMessagesPayload'
PartitionList:
name: PartitionList
title: Partition List
summary: List of partitions for a topic
contentType: application/json
payload:
$ref: '#/components/schemas/PartitionListPayload'
schemas:
ProduceMessagePayload:
type: object
properties:
key:
type: string
description: >-
Message key used for partition assignment. Messages with the same
key are guaranteed to be delivered to the same partition in order.
value:
description: The message payload content
headers:
type: object
additionalProperties:
type: string
description: Optional message headers for metadata
partition:
type: integer
description: Optional explicit partition number
timestamp:
type: string
format: date-time
description: Message timestamp (defaults to current time)
required:
- value
ConsumedMessagePayload:
type: object
properties:
key:
type: string
description: Message key
value:
description: The message payload content
headers:
type: object
additionalProperties:
type: string
topic:
type: string
description: Source topic name
partition:
type: integer
description: Partition number the message was consumed from
offset:
type: integer
format: int64
description: Message offset within the partition
timestamp:
type: string
format: date-time
description: Message timestamp
timestampType:
type: string
enum:
- CREATE_TIME
- LOG_APPEND_TIME
TopicListPayload:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/TopicSummary'
TopicSummary:
type: object
properties:
name:
type: string
description: Topic name
partitionCount:
type: integer
description: Number of partitions
replicationFactor:
type: integer
description: Replication factor
retentionMs:
type: integer
format: int64
description: Message retention period in milliseconds
CreateTopicPayload:
type: object
required:
- name
properties:
name:
type: string
description: Topic name
partitionCount:
type: integer
description: Number of partitions
default: 1
retentionMs:
type: integer
format: int64
description: Message retention time in milliseconds
default: 604800000
config:
type: object
additionalProperties:
type: string
description: Additional topic configuration properties
CreateConsumerGroupPayload:
type: object
required:
- groupId
properties:
groupId:
type: string
description: Consumer group identifier
autoOffsetReset:
type: string
enum:
- earliest
- latest
default: latest
description: Where to start consuming if no committed offset exists
enableAutoCommit:
type: boolean
default: true
description: Whether offsets are automatically committed
FetchedMessagesPayload:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/ConsumedMessagePayload'
count:
type: integer
description: Number of messages returned
PartitionListPayload:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/PartitionInfo'
PartitionInfo:
type: object
properties:
partitionId:
type: integer
description: Partition identifier
leader:
type: string
description: Leader node for this partition
beginOffset:
type: integer
format: int64
description: Earliest available offset
endOffset:
type: integer
format: int64
description: Latest offset (next offset to be assigned)
ConsumerLag:
type: object
properties:
topic:
type: string
partition:
type: integer
currentOffset:
type: integer
format: int64
description: Current consumer offset
logEndOffset:
type: integer
format: int64
description: Latest offset in the partition
lag:
type: integer
format: int64
description: Number of messages behind