1
+ -- Enqueue some messages !!!
2
+
3
+ -- - 15 Non urgent messages !!!
4
+
5
+ for i in $(seq 15 )
6
+ do
7
+ ./ enqueue_msg .sh " Message $i" " NON URGENT" " This is a non urgent message" 2
8
+ done
9
+
10
+
11
+ -- - 15 urgent messages !!!
12
+ for i in $(seq 15 )
13
+ do
14
+ ./ enqueue_msg .sh " Message $i" " URGENT" " This is an urgent message" 1
15
+ done
16
+
17
+ -- - Check the messages:
18
+
19
+
20
+ [oracle@rdbms19oniaas AQ]$ ./ check_queue_QUEUE1 .sh
21
+
22
+ SQL* Plus: Release 19 .0 .0 .0 .0 - Production on Wed Dec 28 11 :36 :58 2022
23
+ Version 19 .14 .0 .0 .0
24
+
25
+ Copyright (c) 1982 , 2021 , Oracle. All rights reserved.
26
+
27
+ Last Successful login time : Wed Dec 28 2022 11 :36 :30 + 00 :00
28
+
29
+ Connected to:
30
+ Oracle Database 19c Enterprise Edition Release 19 .0 .0 .0 .0 - Production
31
+ Version 19 .14 .0 .0 .0
32
+
33
+ SQL> SQL> SQL> SQL> SQL>
34
+ QUEUE_SCHEMA QUEUE_NAME ENQUEUED_MSGS DEQUEUED_MSGS
35
+ -- ---------------------------- ------------------------------ ------------- -------------
36
+ USUAQ1 AQ$_QTABLE1_E 1 0
37
+ USUAQ1 QUEUE1 32 1
38
+
39
+ -- Dequeue with subscapp3: this will dequeue only messages with: tab.user_data.f_category=''NON URGENT'' and priority>1
40
+ --
41
+ -- - Dequeue one:
42
+
43
+ ./ dequeue_msg .sh APPUSER3 subscapp3
44
+
45
+ [oracle@rdbms19oniaas AQ]$ ./ dequeue_msg .sh APPUSER3 subscapp3
46
+
47
+ Subject: Message 1
48
+ Category: NON URGENT
49
+ Content: This is a non urgent message
50
+
51
+ -- Dequeue another one:
52
+
53
+ [oracle@rdbms19oniaas AQ]$ ./ dequeue_msg .sh APPUSER3 subscapp3
54
+ Subject: Message 2
55
+ Category: NON URGENT
56
+ Content: This is a non urgent message
57
+
58
+ PL/ SQL procedure successfully completed.
59
+
60
+ [oracle@rdbms19oniaas AQ]$
61
+
62
+ -- Now dequeue one with subscapp2: this will dequeue only messages with: tab.user_data.f_category=''URGENT'' and priority=1
63
+
64
+ ./ dequeue_msg .sh APPUSER2 subscapp2
65
+
66
+ [oracle@rdbms19oniaas AQ]$ ./ dequeue_msg .sh APPUSER2 subscapp2
67
+ Subject: Message 1
68
+ Category: URGENT
69
+ Content: This is an urgent message
70
+
71
+ -- Dequeue another one:
72
+
73
+ [oracle@rdbms19oniaas AQ]$ ./ dequeue_msg .sh APPUSER2 subscapp2
74
+ Subject: Message 2
75
+ Category: URGENT
76
+ Content: This is an urgent message
77
+
78
+ PL/ SQL procedure successfully completed.
79
+
80
+ -- - Now let's dequeue with array processing:
81
+
82
+ [oracle@rdbms19oniaas AQ]$ ./ dequeue_array_msg .sh APPUSER3 subscapp3 10
83
+ Number of messages dequeued: 10
84
+ Message number 1 Message 3 NON URGENT This is a non urgent message
85
+ Message number 2 Message 4 NON URGENT This is a non urgent message
86
+ Message number 3 Message 5 NON URGENT This is a non urgent message
87
+ Message number 4 Message 6 NON URGENT This is a non urgent message
88
+ Message number 5 Message 7 NON URGENT This is a non urgent message
89
+ Message number 6 Message 8 NON URGENT This is a non urgent message
90
+ Message number 7 Message 9 NON URGENT This is a non urgent message
91
+ Message number 8 Message 10 NON URGENT This is a non urgent message
92
+ Message number 9 Message 11 NON URGENT This is a non urgent message
93
+ Message number 10 Message 12 NON URGENT This is a non urgent message
94
+
95
+ -- - Let's array dequeue again:
96
+
97
+ [oracle@rdbms19oniaas AQ]$ ./ dequeue_array_msg .sh APPUSER3 subscapp3 10
98
+ Number of messages dequeued: 3
99
+ Message number 1 Message 13 NON URGENT This is a non urgent message
100
+ Message number 2 Message 14 NON URGENT This is a non urgent message
101
+ Message number 3 Message 15 NON URGENT This is a non urgent message
102
+
103
+ PL/ SQL procedure successfully completed.
104
+
105
+ -- - If there are no messages waiting to be dequeued:
106
+
107
+ [oracle@rdbms19oniaas AQ]$ ./ dequeue_array_msg .sh APPUSER3 subscapp3 10
108
+ Nothing to fetch
109
+
110
+ PL/ SQL procedure successfully completed.
111
+
112
+ -- - Array dequeue with subscapp2:
113
+ [oracle@rdbms19oniaas AQ]$ ./ dequeue_array_msg .sh APPUSER2 subscapp2 10
114
+ Number of messages dequeued: 10
115
+ Message number 1 Message 3 URGENT This is an urgent message
116
+ Message number 2 Message 4 URGENT This is an urgent message
117
+ Message number 3 Message 5 URGENT This is an urgent message
118
+ Message number 4 Message 6 URGENT This is an urgent message
119
+ Message number 5 Message 7 URGENT This is an urgent message
120
+ Message number 6 Message 8 URGENT This is an urgent message
121
+ Message number 7 Message 9 URGENT This is an urgent message
122
+ Message number 8 Message 10 URGENT This is an urgent message
123
+ Message number 9 Message 11 URGENT This is an urgent message
124
+ Message number 10 Message 12 URGENT This is an urgent message
125
+
126
+ [oracle@rdbms19oniaas AQ]$ ./ dequeue_array_msg .sh APPUSER2 subscapp2 10
127
+ Number of messages dequeued: 3
128
+ Message number 1 Message 13 URGENT This is an urgent message
129
+ Message number 2 Message 14 URGENT This is an urgent message
130
+ Message number 3 Message 15 URGENT This is an urgent message
131
+
132
+ PL/ SQL procedure successfully completed.
133
+
134
+ [oracle@rdbms19oniaas AQ]$ ./ dequeue_array_msg .sh APPUSER2 subscapp2 10
135
+ Nothing to fetch
136
+
137
+ PL/ SQL procedure successfully completed.
138
+
139
+ [oracle@rdbms19oniaas AQ]$ ./ check_queue_QUEUE1 .sh
140
+
141
+ QUEUE_SCHEMA QUEUE_NAME ENQUEUED_MSGS DEQUEUED_MSGS
142
+ -- ---------------------------- ------------------------------ ------------- -------------
143
+ USUAQ1 AQ$_QTABLE1_E 1 0
144
+ USUAQ1 QUEUE1 32 31
145
+
146
+
147
+ -- - Add a new subscriber: subscall will dequeue any messages
148
+ sqlplus USUAQ1/ " Oracle_4U" @rdbms19oniaas:1521 / ORCLPDB1
149
+
150
+ DECLARE
151
+ subscriber sys .aq $_agent;
152
+ BEGIN
153
+ subscriber := sys .aq $_agent(' subscall' , null , null );
154
+ DBMS_AQADM .ADD_SUBSCRIBER (
155
+ queue_name => ' USUAQ1.QUEUE1' ,
156
+ subscriber => subscriber
157
+ );
158
+ END;
159
+ /
160
+
161
+
162
+ -- - Enqueue some messages again:
163
+
164
+ -- - 15 Non urgent messages !!!
165
+
166
+ for i in $(seq 15 )
167
+ do
168
+ ./ enqueue_msg .sh " Message $i" " NON URGENT" " This is a non urgent message" 2
169
+ done
170
+
171
+
172
+ -- - 15 urgent messages !!!
173
+ for i in $(seq 15 )
174
+ do
175
+ ./ enqueue_msg .sh " Message $i" " URGENT" " This is an urgent message" 1
176
+ done
177
+
178
+ -- - Check the messages:
179
+
180
+ [oracle@rdbms19oniaas AQ]$ ./ check_queue_QUEUE1 .sh
181
+
182
+ QUEUE_SCHEMA QUEUE_NAME ENQUEUED_MSGS DEQUEUED_MSGS
183
+ -- ---------------------------- ------------------------------ ------------- -------------
184
+ USUAQ1 AQ$_QTABLE1_E 1 0
185
+ USUAQ1 QUEUE1 62 31
186
+
187
+
188
+ -- Now dequeue all the messages with subscall !!!
189
+ -- - We use an array size of 30:
190
+
191
+ ./ dequeue_array_msg .sh APPUSER2 subscall 30
192
+
193
+ [oracle@rdbms19oniaas AQ]$ ./ dequeue_array_msg .sh APPUSER2 subscall 30
194
+ Number of messages dequeued: 30
195
+ Message number 1 Message 1 NON URGENT This is a non urgent message
196
+ Message number 2 Message 2 NON URGENT This is a non urgent message
197
+ Message number 3 Message 3 NON URGENT This is a non urgent message
198
+ Message number 4 Message 4 NON URGENT This is a non urgent message
199
+ Message number 5 Message 5 NON URGENT This is a non urgent message
200
+ Message number 6 Message 6 NON URGENT This is a non urgent message
201
+ Message number 7 Message 7 NON URGENT This is a non urgent message
202
+ Message number 8 Message 8 NON URGENT This is a non urgent message
203
+ Message number 9 Message 9 NON URGENT This is a non urgent message
204
+ Message number 10 Message 10 NON URGENT This is a non urgent message
205
+ Message number 11 Message 11 NON URGENT This is a non urgent message
206
+ Message number 12 Message 12 NON URGENT This is a non urgent message
207
+ Message number 13 Message 13 NON URGENT This is a non urgent message
208
+ Message number 14 Message 14 NON URGENT This is a non urgent message
209
+ Message number 15 Message 15 NON URGENT This is a non urgent message
210
+ Message number 16 Message 1 URGENT This is an urgent message
211
+ Message number 17 Message 2 URGENT This is an urgent message
212
+ Message number 18 Message 3 URGENT This is an urgent message
213
+ Message number 19 Message 4 URGENT This is an urgent message
214
+ Message number 20 Message 5 URGENT This is an urgent message
215
+ Message number 21 Message 6 URGENT This is an urgent message
216
+ Message number 22 Message 7 URGENT This is an urgent message
217
+ Message number 23 Message 8 URGENT This is an urgent message
218
+ Message number 24 Message 9 URGENT This is an urgent message
219
+ Message number 25 Message 10 URGENT This is an urgent message
220
+ Message number 26 Message 11 URGENT This is an urgent message
221
+ Message number 27 Message 12 URGENT This is an urgent message
222
+ Message number 28 Message 13 URGENT This is an urgent message
223
+ Message number 29 Message 14 URGENT This is an urgent message
224
+ Message number 30 Message 15 URGENT This is an urgent message
225
+
226
+ PL/ SQL procedure successfully completed.
227
+
228
+
229
+ -- Now use subscapp2 to dequeue urgent messages only, with an array size of 15:
230
+
231
+ [oracle@rdbms19oniaas AQ]$ ./ dequeue_array_msg .sh APPUSER2 subscapp2 15
232
+ Number of messages dequeued: 15
233
+ Message number 1 Message 1 URGENT This is an urgent message
234
+ Message number 2 Message 2 URGENT This is an urgent message
235
+ Message number 3 Message 3 URGENT This is an urgent message
236
+ Message number 4 Message 4 URGENT This is an urgent message
237
+ Message number 5 Message 5 URGENT This is an urgent message
238
+ Message number 6 Message 6 URGENT This is an urgent message
239
+ Message number 7 Message 7 URGENT This is an urgent message
240
+ Message number 8 Message 8 URGENT This is an urgent message
241
+ Message number 9 Message 9 URGENT This is an urgent message
242
+ Message number 10 Message 10 URGENT This is an urgent message
243
+ Message number 11 Message 11 URGENT This is an urgent message
244
+ Message number 12 Message 12 URGENT This is an urgent message
245
+ Message number 13 Message 13 URGENT This is an urgent message
246
+ Message number 14 Message 14 URGENT This is an urgent message
247
+ Message number 15 Message 15 URGENT This is an urgent message
248
+
249
+ PL/ SQL procedure successfully completed.
250
+
251
+ [oracle@rdbms19oniaas AQ]$ ./ dequeue_array_msg .sh APPUSER2 subscapp2 15
252
+ Nothing to fetch
253
+
254
+ PL/ SQL procedure successfully completed.
255
+
256
+ -- And use subscapp3 to dequeue non urgent messages:
257
+
258
+ ./ dequeue_array_msg .sh APPUSER3 subscapp3 15
259
+
260
+ [oracle@rdbms19oniaas AQ]$ ./ dequeue_array_msg .sh APPUSER3 subscapp3 15
261
+ Number of messages dequeued: 15
262
+ Message number 1 Message 1 NON URGENT This is a non urgent message
263
+ Message number 2 Message 2 NON URGENT This is a non urgent message
264
+ Message number 3 Message 3 NON URGENT This is a non urgent message
265
+ Message number 4 Message 4 NON URGENT This is a non urgent message
266
+ Message number 5 Message 5 NON URGENT This is a non urgent message
267
+ Message number 6 Message 6 NON URGENT This is a non urgent message
268
+ Message number 7 Message 7 NON URGENT This is a non urgent message
269
+ Message number 8 Message 8 NON URGENT This is a non urgent message
270
+ Message number 9 Message 9 NON URGENT This is a non urgent message
271
+ Message number 10 Message 10 NON URGENT This is a non urgent message
272
+ Message number 11 Message 11 NON URGENT This is a non urgent message
273
+ Message number 12 Message 12 NON URGENT This is a non urgent message
274
+ Message number 13 Message 13 NON URGENT This is a non urgent message
275
+ Message number 14 Message 14 NON URGENT This is a non urgent message
276
+ Message number 15 Message 15 NON URGENT This is a non urgent message
277
+
278
+ PL/ SQL procedure successfully completed.
279
+
280
+ [oracle@rdbms19oniaas AQ]$ ./ dequeue_array_msg .sh APPUSER3 subscapp3 15
281
+ Nothing to fetch
282
+
283
+ PL/ SQL procedure successfully completed.
284
+
285
+
286
+ [oracle@rdbms19oniaas AQ]$ ./ check_queue_QUEUE1 .sh (note the view refresh is asyncronous)
287
+
288
+ QUEUE_SCHEMA QUEUE_NAME ENQUEUED_MSGS DEQUEUED_MSGS
289
+ -- ---------------------------- ------------------------------ ------------- -------------
290
+ USUAQ1 AQ$_QTABLE1_E 1 0
291
+ USUAQ1 QUEUE1 62 46
292
+
293
+ [oracle@rdbms19oniaas AQ]$ ./ check_queue_QUEUE1 .sh
294
+
295
+ QUEUE_SCHEMA QUEUE_NAME ENQUEUED_MSGS DEQUEUED_MSGS
296
+ -- ---------------------------- ------------------------------ ------------- -------------
297
+ USUAQ1 AQ$_QTABLE1_E 1 0
298
+ USUAQ1 QUEUE1 62 61
0 commit comments