azure - Peek Message before Receiving -


i new azure , learning & service bus past couple of weeks.

i trying read messages azure service bus queue. queueclient receive method pull message out of queue not want initially. browsing through messages in queue 1 @ time in while loop using peek() method. compare correlationid of message correlation id internally maintain in local db table.

only if correlation id matches, go ahead , receive message. but, inorder receive message using messagesequencenumber, learned have defer message first, messageid stored in list or , use queueclient receive() method receive messages , mark message complete.

but since browsing messages using peek(), not allow me defer message. stuck here in receiving message using messageid.

also cannot complete message before receiving.

can please suggest ways accomplish this?

brokeredmessage message = new brokeredmessage(); message = null;  while ((message = reader.peek()) != null && row_count > 0) {  list<long> deferredmessagereceipts = new list<long>();   // read ping results table rows no msg_recv_ts  logobj.categories.clear(); logobj.categories.add("info"); logobj.message = "reading ! message: " + " correlation id:" +      message.correlationid; logger.write(logobj);  if (message != null) {  if (prta_rows.corr_id == message.correlationid) //compare correlation ids   {   datetime ping_recv_ts = datetime.now;   logobj.categories.clear();                             logobj.categories.add("info");   string messagebody = message.getbody<string>();  logobj.message = "ack message found ! message body: " + messagebody + "       correlation id:" + message.correlationid;  logger.write(logobj);  string msg_type = "ping_ack";  logobj.categories.clear();                             logobj.categories.add("info");  logobj.message = "marking message complete...";  logger.write(logobj);    // deferring message  message.defer(); // getting error here "the operation cannot completed      because receivecontext null."   long msg_seq_nbr=message.sequencenumber;   reader.receive(msg_seq_nbr); // operation not possible without    deferring message.   message.complete();     }      }    }  // end while browsing messages. 

i think should reconsider design not how typically use queuing system. used when need temporal decoupling, load balancing , first in first out.

you may want consider using servicebus topics , have subscribers per application. topics similar queues use pub\sub model. use filters in topic\subscription route messages correct subscription. apps 'publish' 1 topic , have subscription each application.


Popular posts from this blog