Skip to content

Commit 7538e69

Browse files
TxEventQ docs update
Signed-off-by: Anders Swanson <anders.swanson@oracle.com>
1 parent 1d6911e commit 7538e69

File tree

4 files changed

+25
-21
lines changed

4 files changed

+25
-21
lines changed

docs-source/transactional-event-queues/content/getting-started/advanced-features.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ Messages can be propagated within the same database or across a [database link](
1818

1919
#### Queue to Queue Message Propagation
2020

21-
Create and start two queues. `source` will be the source queue, and `dest` will be the propagated destination queue.
21+
Create and start two queues. `source` will be the source queue, and `dest` will be the propagated destination queue. Note that `multiple_consumers` _must_ be `true` during queue creation to enable propagation.
2222

2323
```sql
2424
begin
@@ -63,6 +63,8 @@ declare
6363
message json;
6464
body varchar2(200) := '{"content": "this message is propagated!"}';
6565
begin
66+
enqueue_options := dbms_aq.enqueue_options_t();
67+
message_properties := dbms_aq.message_properties_t();
6668
select json(body) into message;
6769
dbms_aq.enqueue(
6870
queue_name => 'source',
@@ -128,6 +130,8 @@ declare
128130
message json;
129131
message_buffer varchar2(500);
130132
begin
133+
dequeue_options := dbms_aq.dequeue_options_t();
134+
message_properties := dbms_aq.message_properties_t();
131135
dequeue_options.navigation := dbms_aq.first_message;
132136
dequeue_options.wait := dbms_aq.no_wait;
133137

docs-source/transactional-event-queues/content/getting-started/core-concepts.md

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,25 +16,27 @@ This section provides the basic concepts of Transactional Event Queues, includin
1616

1717
### What are queues and topics?
1818

19-
Queues and topics both provide high-throughput, asynchronous application communication, but have a few key differences that are relevant for developers and architects.
19+
Queues and topics provide high-throughput, asynchronous application communication, with a few key differences that are relevant for developers and architects.
2020

2121
When using queues, messages follow a send/receive model that allows exactly one consumer. Once the message is consumed, it is discarded after a configurable interval. In contrast, topics may have multiple consumers for each message, and the message is persisted for as long as specified.
2222

23-
Queues work best for applications that expect to dequeue messages to a single consumer. If you plan to broadcast messages to multiple consumers, or require message replay, you should use topics. In general, topics provide greater flexibility for event-streaming applications due to the ability of consumers to independently consume or replay messages, and the database's capability of persisting the message for a specified duration.
23+
Queues work best for applications that only need to dequeue messages with a single consumer. If you plan to broadcast messages to multiple consumers, require message replay, or need consumer parallelism, you should use topics. In general, topics provide greater flexibility for event-streaming applications due to the ability of consumers to independently consume or replay messages, and the database's capability of persisting the message for a specified duration.
2424

25-
The following SQL script uses the `DBMS_AQADM.CREATE_TRANSACTIONAL_EVENT_QUEUE` procedure to create a topic by setting the `multiple_consumers` parameter to `true`. You can find the full parameter definition for the [`DBMS_AQADM.CREATE_TRANSACTIONAL_EVENT_QUEUE` procedure here](https://docs.oracle.com/en/database/oracle/oracle-database/23/arpls/DBMS_AQADM.html#GUID-93B0FF90-5045-4437-A9C4-B7541BEBE573).
25+
The following SQL script uses the [`DBMS_AQADM.CREATE_TRANSACTIONAL_EVENT_QUEUE` procedure](https://docs.oracle.com/en/database/oracle/oracle-database/23/arpls/DBMS_AQADM.html#GUID-6841A667-1021-4E5C-8567-F71913AA4773) to create a topic by setting the `multiple_consumers` parameter to `true`. If the `multiple_consumers` parameter is set to `false`, the created object will have queue semantics instead.
26+
27+
You can find the full parameter definition for the [`DBMS_AQADM.CREATE_TRANSACTIONAL_EVENT_QUEUE` procedure here](https://docs.oracle.com/en/database/oracle/oracle-database/23/arpls/DBMS_AQADM.html#GUID-93B0FF90-5045-4437-A9C4-B7541BEBE573).
2628

2729
```sql
2830
begin
2931
dbms_aqadm.create_transactional_event_queue(
30-
queue_name => 'my_queue',
32+
queue_name => 'my_topic',
3133
queue_payload_type => DBMS_AQADM.JMS_TYPE,
3234
multiple_consumers => true
3335
);
3436

3537
-- Start the queue
3638
dbms_aqadm.start_queue(
37-
queue_name => 'my_queue'
39+
queue_name => 'my_topic'
3840
);
3941
end;
4042
/

docs-source/transactional-event-queues/content/getting-started/message-operations.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ declare
4646
message json;
4747
body varchar2(200) := '{"content": "my first message"}';
4848
begin
49+
enqueue_options := dbms_aq.enqueue_options_t();
50+
message_properties := dbms_aq.message_properties_t();
4951
select json(body) into message;
5052
dbms_aq.enqueue(
5153
queue_name => 'json_queue',
@@ -69,6 +71,8 @@ declare
6971
message json;
7072
message_buffer varchar2(500);
7173
begin
74+
dequeue_options := dbms_aq.dequeue_options_t();
75+
message_properties := dbms_aq.message_properties_t();
7276
dequeue_options.navigation := dbms_aq.first_message;
7377
dequeue_options.wait := dbms_aq.no_wait;
7478

@@ -307,6 +311,8 @@ declare
307311
message_handle raw(16);
308312
message sys.aq$_jms_text_message;
309313
begin
314+
enqueue_options := dbms_aq.enqueue_options_t();
315+
message_properties := dbms_aq.message_properties_t();
310316
message := sys.aq$_jms_text_message.construct();
311317
message.set_text('this is my message');
312318

@@ -336,6 +342,8 @@ declare
336342
message_handle raw(16);
337343
message sys.aq$_jms_text_message;
338344
begin
345+
enqueue_options := dbms_aq.enqueue_options_t();
346+
message_properties := dbms_aq.message_properties_t();
339347
message := sys.aq$_jms_text_message.construct();
340348
message.set_text('this is my message');
341349

@@ -365,6 +373,8 @@ declare
365373
message_handle raw(16);
366374
message sys.aq$_jms_text_message;
367375
begin
376+
enqueue_options := dbms_aq.enqueue_options_t();
377+
message_properties := dbms_aq.message_properties_t();
368378
message := sys.aq$_jms_text_message.construct();
369379
message.set_text('this is my message');
370380

@@ -404,6 +414,8 @@ declare
404414
product_id number;
405415
quantity number;
406416
begin
417+
enqueue_options := dbms_aq.enqueue_options_t();
418+
message_properties := dbms_aq.message_properties_t();
407419
-- Convert the JSON string to a JSON object
408420
message := json(body);
409421

docs-source/transactional-event-queues/content/getting-started/queue-management.md

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -98,17 +98,6 @@ end;
9898
/
9999
```
100100

101-
The `DBMS_AQADM.PURGE_QUEUE` procedure is used to clear messages from a queue.
102-
103-
```sql
104-
begin
105-
dbms_aqadm.purge_queue(
106-
queue_name => 'my_queue'
107-
);
108-
end;
109-
/
110-
```
111-
112101
Use the [`DBMS_AQADM.STOP_QUEUE` procedure](https://docs.oracle.com/en/database/oracle/oracle-database/23/arpls/DBMS_AQADM.html#GUID-14EADFE9-D7C3-472D-895D-861BB5570EED) to stop a queue. A queue must be stopped before it can be dropped using the [`DBMS_AQADM.DROP_TRANSACTIONAL_EVENT_QUEUE` procedure](https://docs.oracle.com/en/database/oracle/oracle-database/23/arpls/DBMS_AQADM.html#GUID-99A161DB-85C7-439A-A85C-A7BEEBD0288F).
113102

114103
```sql
@@ -137,12 +126,9 @@ You should see queue data similar to the following, for the queues available on
137126
| CUSTOM_TYPE_QUEUE| CUSTOM_TYPE_QUEUE| 72535 | NORMAL_QUEUE | 5 | 0 | YES | YES | 0 | null | null | TRUE | Transactional Event Queue | SINGLE |
138127
| MY_QUEUE | MY_QUEUE | 73283 | NORMAL_QUEUE | 5 | 0 | YES | YES | 0 | null | null | TRUE | Transactional Event Queue | SINGLE |
139128

140-
141-
142-
143129
#### Kafka APIs
144130

145-
You can use standard Kafka APIs to create a topic with the [Kafka Java Client for Oracle Database Transactional Event Queues](https://github.com/oracle/okafka). The following code configures connection properties for Oracle Database and creates a topic using the [`org.oracle.okafka.clients.admin.AdminClient` class](https://mvnrepository.com/artifact/com.oracle.database.messaging/okafka), which implements the `org.apache.kafka.clients.admin.Admin` interface.
131+
Using standard Kafka Java APIs, we can create a topic with the [Kafka Java Client for Oracle Database Transactional Event Queues](https://github.com/oracle/okafka). The following code configures connection properties for Oracle Database, and creates a topic using the [`org.oracle.okafka.clients.admin.AdminClient` class](https://mvnrepository.com/artifact/com.oracle.database.messaging/okafka). This class implements the Apache Kafka `org.apache.kafka.clients.admin.Admin` interface for API compatibility.
146132

147133
```java
148134
// Oracle Database Connection properties

0 commit comments

Comments
 (0)