Skip to content

Commit f7dac4f

Browse files
committed
Add support for visibility timeout in AzureQueueStore
Implement visibility timeout functionality in AzureQueueStore to allow messages to be hidden for a specified duration after being pushed onto the queue. This enhancement works in conjunction with the improvements in definition computation on the service side, reducing the number of definition computations when component harvest results are available.
1 parent 489728c commit f7dac4f

File tree

2 files changed

+5
-2
lines changed

2 files changed

+5
-2
lines changed

config/cdConfig.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ const cd_file = {
1919
const crawlerStoreProvider = config.get('CRAWLER_STORE_PROVIDER') || 'cd(file)'
2020
const maxRequeueAttemptCount = config.get('CRAWLER_MAX_REQUEUE_ATTEMPTS') || 5
2121
const fetchedCacheTtlSeconds = config.get('CRAWLER_FETCHED_CACHE_TTL_SECONDS') || 60 * 60 * 8 //8 hours
22+
const azqueueVisibilityTimeoutSeconds = parseInt(config.get('CRAWLER_HARVESTS_QUEUE_VISIBILITY_TIMEOUT_SECONDS'))
2223

2324
module.exports = {
2425
provider: 'memory', // change this to redis if/when we want distributed config
@@ -117,7 +118,8 @@ module.exports = {
117118
account: cd_azblob.account,
118119
queueName: config.get('CRAWLER_HARVESTS_QUEUE_NAME') || 'harvests',
119120
spnAuth: config.get('CRAWLER_HARVESTS_QUEUE_SPN_AUTH'),
120-
isSpnAuth: config.get('CRAWLER_HARVESTS_QUEUE_IS_SPN_AUTH') || false
121+
isSpnAuth: config.get('CRAWLER_HARVESTS_QUEUE_IS_SPN_AUTH') || false,
122+
visibilityTimeout: isNaN(azqueueVisibilityTimeoutSeconds) ? 5 * 60 : azqueueVisibilityTimeoutSeconds // 5 minutes default
121123
},
122124
'cd(azblob)': cd_azblob,
123125
'cd(file)': cd_file

providers/store/azureQueueStore.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,8 @@ class AzureStorageQueue {
5454

5555
async upsert(document) {
5656
const message = Buffer.from(JSON.stringify({ _metadata: document._metadata })).toString('base64')
57-
return await this.queueService.sendMessage(message)
57+
const options = { visibilityTimeout: this.options.visibilityTimeout || 0 }
58+
return await this.queueService.sendMessage(message, options)
5859
}
5960

6061
get() {

0 commit comments

Comments
 (0)