09.12.2012 Views

Advanced Queuing - Oracle

Advanced Queuing - Oracle

Advanced Queuing - Oracle

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

OCIAttrGet((dvoid *)subscrhp, OCI_HTYPE_SUBSCRIPTION,<br />

(dvoid *)&subname, &lsub,<br />

OCI_ATTR_SUBSCR_NAME, errhp);<br />

General Features of <strong>Advanced</strong> <strong>Queuing</strong><br />

/* Extract the attributes from the AQ descriptor: */<br />

/* Queue name: */<br />

OCIAttrGet(desc, OCI_DTYPE_AQNFY_DESCRIPTOR, (dvoid *)&queue, &size,<br />

OCI_ATTR_QUEUE_NAME, errhp);<br />

/* Consumer name: */<br />

OCIAttrGet(desc, OCI_DTYPE_AQNFY_DESCRIPTOR, (dvoid *)&consumer, &lconsumer,<br />

OCI_ATTR_CONSUMER_NAME, errhp);<br />

/* Message properties: */<br />

OCIAttrGet(desc, OCI_DTYPE_AQNFY_DESCRIPTOR, (dvoid *)&msgprop, &size,<br />

OCI_ATTR_MSG_PROP, errhp);<br />

/* Get correlation from message properties: */<br />

checkerr(errhp, OCIAttrGet(msgprop, OCI_DTYPE_AQMSG_PROPERTIES,<br />

(dvoid *)&correlation, &lcorrelation,<br />

OCI_ATTR_CORRELATION, errhp));<br />

if (lconsumer == strlen(applist[0]))<br />

{<br />

if (!memcmp((dvoid *)consumer, (dvoid *)applist[0], strlen(applist[0])))<br />

appno = 0;<br />

else if (!memcmp((dvoid *)consumer, (dvoid *)applist[1],<br />

strlen(applist[1])))<br />

appno = 1;<br />

else if (!memcmp((dvoid *)consumer, (dvoid *)applist[2],<br />

strlen(applist[2])))<br />

appno = 2;<br />

else<br />

{<br />

printf("Wrong consumer in notification");<br />

return;<br />

}<br />

}<br />

else<br />

{ /* consumer name must be "APP1", "APP2" or "APP3" */<br />

printf("Wrong consumer in notification");<br />

return;<br />

}<br />

A Sample Application Using AQ 8-21

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!