Whatever message this page gives is out now! Go check it out!
<cfscript>
this.sqsCred = {
"alias" : "firstAWSCred",
"vendorName" : "AZURE",
"region" : "us-west-2",
"secretAccessKey" : "xxxxxxxxxxxxxxxxxxx",
"accessKeyId" : "xxxxxxxxxxxxxxxxxx"
}
this.sqsConf = {
"serviceName" : "SERVICE_BUS"
}
this.serviceBusCred = {
"vendorName" : "AZURE",
"connectionString" : "xxxxxxxxxx"
}
this.serviceBusConf = {
"serviceName" : "SERVICE_BUS"
}
</cfscript>sbObject = getCloudService(this.serviceBusCred, this.serviceBusConf)<cfscript>
// define the credential and the configuration aliases in the ColdFusion Admin
sbObject=getCloudService("sbCred","sbConf")
// code below.
...........
</cfscript><cfscript>
sbCred = {
"vendorName" : "AZURE",
"connectionString" : "xxxxxx"
}
sbConf = {
"serviceName" : "AZURE_SERVICEBUS",
"options" : {
"operationTimeout" : "10s",
"retryPolicy":"default"
}
}
</cfscript><cfscript>
// Using config alias and struct for service credentials
// service bus credentials
sbCred= {
"vendorName" : "AZURE",
"connectionString" : "xxxxxx"
}
sb= getCloudService(sbCred, "sbConf")
// code below
.....................................
</cfscript><cfscript>
// Using Structs for both cloud credential and config
sbCred = {
"vendorName" : "AZURE",
"connectionString" : "xxxxxx"
}
sbConf = {
"serviceName" : "AZURE_SERVICEBUS",
"options" : {
"operationTimeout" : "10s",
"retryPolicy":"default"
}
}
sb= getCloudService(sbCred , sbConf )
// code below
...................................................................
</cfscript><cfscript>
// Create an object of administrator component and call the login method
adminObj = createObject("component","cfide.adminapi.administrator")
adminObj.login("admin")
// Create an object of cloud component
cloudObj = createObject("component","cfide.adminapi.cloud")
// define credentials struct
credentialStruct= {
"vendorName" : "AZURE",
"connectionString" : "xxxxxx"
}
// add credential credentialStruct
try{
cloudObj.addCredential(credentialStruct)
writeOutput("Credentials added successfully")
}
catch(any e){
writeDump(e)
}
</cfscript><cfscript>
// Create an object of administrator component and call the login method
adminObj = createObject("component","cfide.adminapi.administrator")
adminObj.login("admin")
// Create an object of cloud component
cloudObj = createObject("component","cfide.adminapi.cloud")
// define configuration struct
configStruct= {
"serviceName" : "AZURE_SERVICEBUS",
"options" : {
"operationTimeout" : "10s",
"retryPolicy":"default"
}
}
// add config configStruct
try{
cloudObj.addServiceConfig(configStruct)
writeOutput("Configuration service added successfully")
}
catch(any e){
writeDump(e)
}
</cfscript><cfscript>
sb = getcloudService(this.serviceBusCred, this.serviceBusConf)
// topic metadata
createTopicMetadata = {
"autoDeleteOnIdle" = "45M",
"requiresDuplicateDetection" = "yes",
//"maxSize" = 1024,
"entityStatus" = "Active",
"userMetadata" = "my user metadata",
"enableBatchedOperations" = "true",
"enablePartitioning" = "yes"
}
//sb.deleteTopic("secondTopic")
tempTopic = sb.createTopic("Topic_005", createTopicMetadata)
//sb.deleteTopic("firstTopic")
writeDump(tempTopic)
//writeDump(sb.listTopics())
</cfscript><cfscript>
sb = getcloudService(this.serviceBusCred, this.serviceBusConf)
subscriptionMetadata={
"subscriptionName"="sub_1",
"topicPath"="Topic_005",
"lockDuration" = "77s",
"maxDeliveryCount" = 12,
"enableDeadLetteringOnMessageExpiration"="true",
"enableDeadLetteringOnFilterEvaluationException"="true"
}
mysub=sb.subscribe(subscriptionMetadata)
writeDump(mysub)
</cfscript><cfscript>
sb = getcloudService(this.serviceBusCred, this.serviceBusConf)
sb.deleteQueue("Queue18")
// send message
sendMessageMetadata = {
"messageBody" = "my message is here",
"messageProperties" = {
"myatt1" = "att1,att2"
}
}
tempQ = sb.createQueue("Queue18")
//writedump(tempQ)
mypath=tempQ.getPath()
sendMessageResponse = tempQ.sendMessage(sendMessageMetadata)
writeDump(sendMessageResponse)
</cfscript><cfscript>
sb = getcloudService(this.serviceBusCred, this.serviceBusConf);
myQ = sb.listQueues().get("queueList")[1]
sendMessage()
public function sendMessage() {
writeoutput("send message response")
closure = function (){
writeoutput("my function my choice")
}
sendMessageMetadata = {
"messageBody" = "my message my choice",
"messageProperties" = {
"myatt1" = "att1,att2"
}
}
sendMessageResponse = myQ.sendMessage(sendMessageMetadata)
writeDump(sendMessageResponse)
}
</cfscript><cfscript>
sb = getcloudService(this.serviceBusCred, this.serviceBusConf)
// list all queues
allQueues=sb.listQueues()
writeDump(allQueues)
</cfscript><cfscript>
sb = getcloudService(this.serviceBusCred, this.serviceBusConf);
myQ = sb.listQueues().get("queueList")[1]
writeDump(myQ.getDescription())
</cfscript><cfscript>
sb = getcloudService(this.serviceBusCred, this.serviceBusConf)
// list all queues
try{
sb.deleteQueue("Queue8")
writeOutput("Queue deleted successfully")
}
catch (any e){
writeOutput("Unable to delete queue")
}
</cfscript><cfscript>
sb = getcloudService(this.serviceBusCred, this.serviceBusConf)
// define queue attributes
lockDuration = 51
qName = "Q_001"
queueAttributes = {
"autoDeleteOnIdle" = "240h",
"enableDeadLetteringOnMessageExpiration" = true,
"maxDeliveryCount" = 101,
"requiresDuplicateDetection" = "YES", // cannot be changed w/ update.
"lockDuration" = "#lockDuration#s",
//"maxSizeInMB" = 2048, //check for default value
"entityStatus" = "Active",
"userMetadata" = "some user metadata : data val",
"enableBatchedOperations" = true,
"enablePartitioning" = false // cannot be changed w/ update.
}
queueAttributesUpdated = {
"autoDeleteOnIdle" = "10M",
"enableDeadLetteringOnMessageExpiration" = false,
"entityStatus" = "Disabled",
"userMetadata" = "some new user metadata",
"enableBatchedOperations" = "no"
}
// create the queue
sb.createQueue(qName, queueAttributes)
try{
sb.updateQueue(qName, queueAttributesUpdated)
writeOutput("Queue updated successfully.")
}
catch (any e){
writeOutput("Could not update queue.")
}
</cfscript><cfscript>
sb = getcloudService(this.serviceBusCred, this.serviceBusConf)
// create a queue
myQueue=sb.createQueue("Q_004")
// set prefetch count
try{
setCount=sb.setPrefectCount(myQueue,50)
writeOutput("Prefetch count set successfully.")
}
catch (any e){
writeOutput("Unable to set prefetch count.")
}
</cfscript><cfscript>
sb = getcloudService(this.serviceBusCred, this.serviceBusConf)
// get prefetch count
getCount=sb.getPrefetchCount("Q_004")
writeDump(getCount)
</cfscript><cfscript>
sb = getcloudService(this.serviceBusCred, this.serviceBusConf)
msgLockDurationInQ = 3
pauseTimeInSecs = (msgLockDurationInQ+3) * 1000
msgCount = 5
qName = "Q_batchOps"
queueAttributes = {
"maxDeliveryCount" = 100,
"lockDuration" = "#msgLockDurationInQ#s"
}
// create a queue
myQueue=sb.createQueue(qName,queueAttributes)
// send messages in a batch
msgBatch = arrayNew(1)
for(n=1; n <= msgCount; n++){
msgInstance = {
"messageId" = "#n#",
"messageBody" = "msg time stamp - #now()#"
}
msgBatch[n] = msgInstance
}
messageBatchResponse=sb.sendMessageBatch(qName, msgBatch)
writeDump(messageBatchResponse)
</cfscript><cfscript>
sb = getcloudService(this.serviceBusCred, this.serviceBusConf)
qName = "Q_006"
schedMessage = {
"messageId" = "001",
"messageBody" = "message body"
}
scheduleResponse = sb.scheduleMessageToQueue(qName, schedMessage)
writeDump(scheduleResponse)
</cfscript><cfscript>
sb = getcloudService(this.serviceBusCred, this.serviceBusConf)
msgCount = 3
msgLockDuration = 3
qName = "Q_Peek_Ex"
queueAttributes = {
"maxDeliveryCount" = msgCount,
"lockDuration" = "#msgLockDuration#s"
}
queue = sb.createQueue(qName, queueAttributes)
peekProps = {
"fromSequenceNumber" = 1,
"messageCount" = msgCount - 1
}
writeOutput("peeking q msgs...<br>")
writeDump(queue.peekMessage(peekProps))
</cfscript><cfscript>
sb = getcloudService(this.serviceBusCred, this.serviceBusConf)
// define topic attributes
topicName = "topic_001";
autoDeleteOnIdle = 45
topicAttributes = {
"autoDeleteOnIdle" = "#autoDeleteOnIdle#M",
//"requiresDuplicateDetection" = "yes", //cannot be modified. def.: false
"maxSizeInMB" = 1024,
"entityStatus" = "Active",
"userMetadata" = "modified metadata",
"enableBatchedOperations" = true,
"enablePartitioning" = "no"
}
// create a topic
topic = sb.createTopic(topicName) //create with default attributes
writeOutput("created topic: " & topic.getPath() & "<br>")
// update the topic
try{
sb.updateTopic(topicName, topicAttributes)
writeOutput("Topic " & topicName & " updated successfully")
}
catch (any e){
writeOutput("Unable to update topic")
}
</cfscript><cfscript>
sb = getcloudService(this.serviceBusCred, this.serviceBusConf)
topicName="topic_001"
// delete the previously created topic- "topic_001"
try{
sb.deleteTopic(topicName)
writeOutput("Topic " & topicName & " deleted successfully")
}
catch(any e){
writeOutput("Unable to delete the topic")
}
</cfscript><cfscript>
sb = getcloudService(this.serviceBusCred, this.serviceBusConf)
// create two topics
sb.createTopic("T1") // Topic 1
sb.createTopic("T2") // Topic 2
// list all topics
listResponse=sb.listTopics()
writeDump(listResponse)
</cfscript><cfscript>
sb = getcloudService(this.serviceBusCred, this.serviceBusConf)
topicName = "topic-for-sub";
subscriptionName = "subsciption-001"
subscriptionAttribs = {
"subscriptionName" = subscriptionName,
"autoDeleteOnIdle" = "5M",
"maxDeliveryCount" = 10,
"lockDuration" = "10s",
"defaultMessageTimeToLive" = "10M"
}
// create topic
try{
topic=sb.createTopic(topicName) //create w/ default attributes
writeOutput("Topic created successfully")
}
catch(any e){
writeOutput("Unable to create topic")
}
// create subscription
try{
subscription = topic.subscribe(topicName, subscriptionAttribs) //create w/ default attributes
writeOutput("Subscribed to topic successfully")
}
catch(any e){
writeOutput("Unable to subscribe to topic")
}
// unsubscribe to topic
//unsubscribe(String topicPath, String subscriptionName)
try{
sb.unsubscribe(topic,subscription)
writeOutput("Unsubscribed successfully")
}
catch(any e){
writeOutput("Unable to unsubscribe")
}
</cfscript><cfscript>
sb = getcloudService(this.serviceBusCred, this.serviceBusConf)
topicName = "testTopic"
// create a topic
topic=sb.createTopic(topicName)
subscriptionName = "sub-00"
// get a subscription
subscription = topic.getSubscription(subscriptionName)
writeDump(subsciption)
</cfscript><cfscript>
sb = getcloudService(this.serviceBusCred, this.serviceBusConf)
// void registerMessageHandler(String topicPath, String subscriptionName, Map metadata)
// create topic
// topic metadata
createTopicMetadata = {
"autoDeleteOnIdle" = "45M",
"requiresDuplicateDetection" = "yes",
//"maxSize" = 1024,
"entityStatus" = "Active",
"userMetadata" = "my user metadata",
"enableBatchedOperations" = "true",
"enablePartitioning" = "yes"
}
topic = sb.createTopic("Topic_013", createTopicMetadata)
// create a subscription
subscriptionName = "Sub_013"
subscriptionAttribs = {
"subscriptionName" = subscriptionName,
"autoDeleteOnIdle" = "5M",
"maxDeliveryCount" = 10,
"lockDuration" = "10s",
"defaultMessageTimeToLive" = "10M"
}
subscription = topic.subscribe(subscriptionAttribs)
messageHandlerOptions={
"autocomplete"="yes",
"maxautorenewduration"="50M",
"maxconsurrentcalls"=30
}
renewMessageResponse=sb.registerMessageHandler(topic,subscription,messageHandlerOptions)
writeDump(renewMessageResponse)
</cfscript>abandonSubscriptionMessage(String formattedSubscriptionPath, Map metadata)<cfscript>
sb = getcloudService(this.serviceBusCred, this.serviceBusConf)
topicName = "topic_003";
topic = topicUtil.createTopic(sb, topicName, false, {}) //purgeAndRecreate, attribs
originalLabel = "Red"
adandonCountLabel = "adandonCount"
subscriptionName = "sub_003"
subscription = topic.subscribe({
"subscriptionName" = subscriptionName
})
updatedMessageProperties = {
"DeadLetterReason" = "reason for this",
"DeadLetterErrorDescription" = "collateral"
}
abandonResponse = sb.abandonSubscriptionMessage(subscription.getTopicName(), subscription.getSubscriptionName(), updatedMessageProperties)
writeDump(abandonResponse)
</cfscript>abandonMessage(String queuePath, Map metadata)<cfscript>
sb = getcloudService(this.serviceBusCred, this.serviceBusConf)
qName = "cfqa-abandon-msg"
// create queue
queue = sb.createQueue(qName)
oldLabel = "red"
newLabel = "blue"
sentMessage = sendMessage(queue, oldLabel)
writeOutput("peeking at the queue: #qName#, before abandoning message.<br>")
receivedMessage = sb.receiveMessagesFromQueue(queue, "PEEKLOCK", 1) //READ_MODE_RECEIVEANDDELETE
for(message in receivedMessage){
//cfdump(var=#message#, label="message received.")
abandonMessage(qName, message.lockToken, newLabel)
}
</cfscript>deferMessage(String queuePath, Map metadata)<cfscript>
sb = getcloudService(this.serviceBusCred, this.serviceBusConf)
qName="queue_002"
// create queue
queue = sb.createQueue(qName, {"lockDuration": "2s"})
// send message to the queue
msgBatch = arrayNew(1)
for(n=1; n <= msgCount; n++){
msgInstance = {
"messageId" = "#n#",
"messageBody" = "msg time stamp - #now()#"
}
msgBatch[n] = msgInstance
}
sb.sendMessageBatch(qName, msgBatch)
receivedMessage = sb.receiveMessagesFromQueue(queue, "PEEKLOCK", 1) //READ_MODE_RECEIVEANDDELETE
// defer message
for(message in receivedMessage){
propertiesToModify = {"deferred_time:" : dateTimeFormat(now())}
sb.deferMessage(qName, {
"lockToken" = message.lockToken ,
"propertiesToModify" = propertiesToModify
})
}
</cfscript>receiveDeferredMessage(String queuePath, Map metadata)<cfscript>
sb = getcloudService(this.serviceBusCred, this.serviceBusConf)
qName="queue_002"
// create queue
queue = sb.createQueue(qName, {"lockDuration": "2s"})
// send message to the queue
msgBatch = arrayNew(1)
for(n=1; n <= msgCount; n++){
msgInstance = {
"messageId" = "#n#",
"messageBody" = "msg time stamp - #now()#"
}
msgBatch[n] = msgInstance
}
sb.sendMessageBatch(qName, msgBatch)
receivedMessage = sb.receiveMessagesFromQueue(queue, "PEEKLOCK", 1) //READ_MODE_RECEIVEANDDELETE
// defer message
for(message in receivedMessage){
propertiesToModify = {"deferred_time:" : dateTimeFormat(now())}
sb.deferMessage(qName, {
"lockToken" = message.lockToken ,
"propertiesToModify" = propertiesToModify
})
}
// receive deferred message
receivedDeferredMessage = sb.receiveDeferredMessage(qName,
{
"sequenceNumber" : seqNo
}
)
writeDump(receivedDeferredMessage)
</cfscript>deadLetterMessage(String queuePath, Map metadata)deadLetterSubscriptionMessage(String formattedSubscriptionPath, Map metadata)addSubscriptionRule(String topicPath, String subscriptionName, Map metadata)<cfscript>
sb = getcloudService(this.serviceBusCred, this.serviceBusConf)
// create a topic
topicName = "topic_001"
topic = sb.createTopic(topicName)
subscriptionName = "subscription_001"
// subscribe to topic
sb.subscribe( topicName, {
"subscriptionName" = subscriptionName
}
)
// get rules
filterRuleTrue = {
"type" = "true",
"name" = "trueFilter"
}
sb.addSubscriptionRule(topicName, subscriptonName, filterRuleTrue)
</cfscript>removeSubscriptionRule(String topicPath, String subscriptionName, String ruleName)<cfscript>
sb = getcloudService(this.serviceBusCred, this.serviceBusConf)
// create a topic
topicName = "topic_001"
topic = sb.createTopic(topicName)
subscriptionName = "subscription_001"
// subscribe to topic
sb.subscribe( topicName, {
"subscriptionName" = subscriptionName
}
)
// get rules
filterRuleTrue = {
"type" = "true",
"name" = "trueFilter"
}
sb.addSubscriptionRule(topicName, subscriptonName, filterRuleTrue)
removeRuleResponse=sb.removeSubscriptionRule(topicName, subscriptonName, filterRuleTrue)
</cfscript>getSubscriptionRules(String formattedSubscriptionPath)scheduleMessageToQueue(String queuePath, Map metadata)<cfscript>
// Get Service Bus instance
sb = getCloudService(this.serviceBusCred, this.serviceBusConf);
// Specify the queue name as a string (not as a queue object)
queueName = "Q_006";
// Define the message to send
messageData = {
"messageId" = "001",
"messageBody" = "Scheduled message from ColdFusion"
};
// Schedule the message using the queue path and message map
scheduleResponse = sb.scheduleMessageToQueue(queueName, messageData);
writeDump(scheduleResponse);
</cfscript>scheduleMessageToTopic(String topicPath, Map metadata)cancelScheduledTopicMessage(String topicPath, long sequenceNumber)cancelScheduledQueueMessage(String queuePath, long sequenceNumber)<cfscript>
sb = getcloudService(this.serviceBusCred, this.serviceBusConf)
qName = "cancel-scheduled-1msg2"
delayInSecs = 30
msgCount = 1
// create a queue
queue = sb.createQueue(qName)
if(!listFindNoCase(qUtil.getQueuesListStr(sb), qName))
writeOutput("queue #qName# NOT created. This is NOT expected.<br>")
else
writeOutput("queue #qName# created successfully.<br>")
messageArrayToSend = getMessageArray(msgCount)
seqNo = scheduler.scheduleMessage(sb, qName, messageArrayToSend[1], delayInSecs)
writeOutput("cancelling message with sequence no: #seqNo#<br>")
cancelMessageResponse = sb.cancelScheduledMessage(qName, seqNo)
if(cancelMessageResponse[statusCode] NEQ 200)
writeOutput("error cancelling msg for #qName#, seqno. #seqNo#<br>")
</cfscript>peekMessageFromQueue(String queuePath, Struct metadata)<cfscript>
sb = getcloudService(this.serviceBusCred, this.serviceBusConf)
// create queue
qName="queue-005"
queue = sb.createQueue(qName)
peekProperties = {
"fromSequenceNumber" = 1,
"messageCount" = 10
}
peekResponse = sb.peekMessageFromQueue(queue.getPath(), peekProperties)
receivedMsgArray = peekResponse.messages
writeDump(receivedMsgArray)
</cfscript>peekMessageFromSubscription(String topicPath, String subscriptionName, Struct metadata)<cfscript>
sb = getcloudService(this.serviceBusCred, this.serviceBusConf)
qName = "q-msg-Peek-x4"
msgCount = 3
msgLockDuration = 2
// create a queue
queue=sb.createQueue(qName,{
"lockDuration"=msgLockDuration,
"maxDeliveryCount"=msgCount
})
// set peek properties
peekProps = {
"fromSequenceNumber" = 1,
"messageCount" = msgCount
}
peekResponse = sb.peekMessage(queue.getPath(), peekProps) // array of size msgCount - 1
if(peekResponse[statusCode] == 200){
receivedMessages = peekResponse.messages
writeOutput("received message deserialized:<br>")
}
else
writeOutput("message browsing failed")
</cfscript>