Marco,
Yes I have tried setting the Threaded property to true. My onThreadDequeued evnt handler looks like this.
fprintf(ptr, "Message received: %s \n", Sender->MessageProperties->MsgId);
fprintf(ptr, "%s \n", Sender->Payload->GetAttr("app_feature_id"));
this causes the service to hang. If I remove the line fprintf(ptr, "%s \n", Sender->Payload->GetAttr("app_feature_id")); it works fine. I've included the code I used to define my object, create and start my queue and to queue up a sample message. What am I doing wrong?
create type feature_package_type as object
(
app_feature_id number(10),
feature_id number(10),
app_id varchar2(7),
service_no_id varchar2(7),
service_no varchar2(20)
);
begin
dbms_aqadm.create_queue_table(queue_table => 'fea_package_queue_table',
queue_payload_type => 'feature_package_type');
dbms_aqadm.create_queue(queue_name => 'feature_package_queue',
queue_table => 'fea_package_queue_table');
dbms_aqadm.start_queue(queue_name => 'feature_package_queue');
commit;
end;
DECLARE
queueopts DBMS_AQ.ENQUEUE_OPTIONS_T;
msgprops DBMS_AQ.MESSAGE_PROPERTIES_T;
msgid RAW(16);
my_msg feature_package_type;
BEGIN
my_msg := feature_package_type(1234567890,1234567,'123abc','abc123','2486564210');
DBMS_AQ.ENQUEUE ('feature_package_queue',
queueopts,
msgprops,
my_msg,
msgid);
END;
Commit;